7.5 KiB
bumblebee-status
Many, many thanks to all contributors! As of now, 25 of the modules are from various contributors (!), and only 16 from myself.
bumblebee-status is a modular, theme-able status line generator for the i3 window manager.
Focus is on:
- Ease of use (no configuration files!)
- Theme support
- Extensibility (of course...)
One thing I like in particular: You can use the mouse wheel up/down to switch workspaces forward and back everywhere throughout the bar (unless you have mapped the mouse wheel buttons to another action for a widget, in which case this doesn't work while hovering that particular widget).
I hope you like it and appreciate any kind of feedback: Bug reports, Feature requests, etc. :)
Thanks a lot!
Required i3wm version: 4.12+ (in earlier versions, blocks won't have background colors)
Supported Python versions: 2.7, 3.3, 3.4, 3.5, 3.6
Explicitly unsupported Python versions: 3.2 (missing unicode literals)
Documentation
See the wiki for documentation.
See FAQ for, well, FAQs.
Other resources:
Installation
$ git clone git://github.com/tobi-wan-kenobi/bumblebee-status
Usage
Normal usage
In your i3wm configuration, modify the status_command for your i3bar like this:
bar {
status_command = <path to bumblebee-status/bumblebee-status> -m <list of modules> -p <list of module parameters> -t <theme>
}
You can retrieve a list of modules and themes by entering:
$ cd bumblebee-status
$ ./bumblebee-status -l themes
$ ./bumblebee-status -l modules
Any parameter you can specify with -p <name>=<value>
, you can alternatively specify in ~/.bumblebee-status.conf
or ~/.config/bumblebee-status.conf
. This parameters act as a fallback, so values specified with -p
have priority.
Configuration files have a format like this:
$ cat ~/.bumblebee-status.conf
[module-parameters]
<key> = <value>
For example:
$ cat ~/.bumblebee-status.conf
[module-parameters]
github.token=abcdefabcdef12345
To change the update interval, use:
$ ./bumblebee-status -m <list of modules> -p interval=<interval in seconds>
As a simple example, this is what my i3 configuration looks like:
bar {
font pango:Inconsolata 10
position top
tray_output none
status_command ~/.i3/bumblebee-status/bumblebee-status -m nic disk:root cpu memory battery date time pasink pasource dnf -p root.path=/ time.format="%H:%M CW %V" date.format="%a, %b %d %Y" -t solarized-powerline
}
Restart i3wm and - that's it!
Events
By default, the following events are handled:
- Mouse-Wheel on any module moves to the next/previous i3 workspace
- Left-click on the "disk" module opens the specified path in nautilus
- Left-click on either "memory" or "cpu" opens gnome-system-monitor
- Left-click on a "pulseaudio" (or pasource/pasink) module toggles the mute state
- Right-click on a "pulseaudio" module opens pavucontrol
- Mouse-Wheel up/down on a "pulseaudio" module raises/lowers the volume
By default, the Mouse-Wheel wraps for the current output. You can disable this behavior by providing the parameter engine.workspacewrap=false
(starting with version 1.4.5). Also, you can completely disable output switching by using engine.workspacewheel=false
.
You can provide your own handlers to any module by using the following "special" configuration parameters:
- left-click
- right-click
- middle-click
- wheel-up
- wheel-down For example, to execute "pavucontrol" whenever you left-click on the nic module, you could write:
$ bumblebee-status -p nic.left-click="pavucontrol"
In the string, you can use the following format identifiers:
- name
- instance
- button
For example:
$ bumblebee-status -p disk.left-click="nautilus {instance}"
Errors
If errors occur, you should see them in the i3bar itself. If that does not work, or you need more information for troubleshooting, you can activate a debug log using the -d
or --debug
switch:
$ ./bumblebee-status -d -m <list of modules>
This will create a file called ~/bumblebee-status-debug.log
by default. The file name can be changed by using the -f
or --logfile
option.
Required Modules
Modules and commandline utilities are only required for modules, the core itself has no external dependencies at all.
- psutil (for the modules 'cpu', 'memory', 'traffic')
- netifaces (for the modules 'nic', 'traffic')
- requests (for the modules 'weather', 'github', 'getcrypto', 'stock')
- power (for the module 'battery')
- dbus (for the module 'spotify')
- i3ipc (for the module 'title')
Required commandline utilities
- xset (for the module 'caffeine')
- notify-send (for the module 'caffeine')
- cmus-remote (for the module 'cmus')
- dnf (for the module 'dnf')
- gpmdp-remote (for the module 'gpmdp')
- setxkbmap (for the module 'layout')
- fakeroot (for the module 'pacman')
- pacman (for the module 'pacman')
- pactl (for the module 'pulseaudio')
- ping (for the module 'ping')
- redshift (for the module 'redshift')
- xrandr (for the module 'xrandr')
- mpc (for the module 'mpd')
- bluez / blueman (for module 'bluetooth')
- dbus-send (for module 'bluetooth')
- nvidia-smi (for module 'nvidiagpu')
- sensors (for module 'sensors', as fallback)
- zpool (for module 'zpool')
Examples
Here are some screenshots for all themes that currently exist:
❗ Some themes (all 'Powerline' themes) require Font Awesome and a powerline-compatible font (powerline-fonts, for example) to display all icons correctly.
Gruvbox Powerline (-t gruvbox-powerline
) (contributed by @paxy97):
Solarized Powerline (-t solarized-powerline
):
Gruvbox (-t gruvbox
):
Solarized (-t solarized
):
Powerline (-t powerline
):
Default (nothing or -t default
):