-
Notifications
You must be signed in to change notification settings - Fork 229
Home
bumblebee-status creates status lines for the i3 window manager. It follows the i3bar protocol.
Please note: So far, it this tool has only been tested on a single laptop using Fedora 24, so I'd be very grateful to hear any experiences and get some bug reports or feature requests :)
##Table of Contents
##Design Goals
- Ease of use: No configuration files, etc. Simply clone and put into your i3 configuration and you are good to go (hopefully...)
- Theming support: What I was missing most in other solutions (although there are some excellent ones out there, such as i3blocks) was the possibility to easily change the look of the i3bar. For bumblebee-status, colors, icons, etc. are defined via a JSON-formatted theme file that is easy to extend and change.
- Modularity: Adding new modules (functionality) should be straight forward
##Installation
$ git clone git://github.com/tobi-wan-kenobi/bumblebee-status
Please have a look at Available Modules to see which bumblebee-status modules require which Python modules. In general, if you do not use an bumblebee-status module, you don't need its dependencies.
The full list of required Python modules is (modules from the Python Standard Library have been excluded):
- psutil
- pyroute2
- netifaces
Some of the modules rather uglish-ly parse the output of standard Linux commands to get their information. Those are:
- dnf for the DNF module
- pactl for the PulseAudio modules
##Usage
Open your i3wm configuration and modify the status_command for your i3bar like this:
bar {
status_command = <path to bumblebee-status/bumblebee-status> -m <list of modules> -t <theme>
}
You can retrieve a list of modules and themes by entering:
$ cd bumblebee-status
$ ./bumblebee-status -l
Some modules accept optional parameters, those are appended to the module name using "::" as separator.
As a simple example, this is what my i3 configuration looks like:
bar {
font pango:Inconsolata 10
position top
tray_output none
status_command ~/src/bumblebee-status/bumblebee-status -m disk disk::/home nic cpu memory battery date::"%a, %b %d %Y" spacer time::"%H:%M CW %V" pasink pasource dnf -t solarized-powerline
}
Restart i3wm and - that's it!
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
You can provide your own handlers using the -e
switch. Event specifications have the following format:
<module name><splitter><mouse button ID><splitter><command to execute>
The splitter defaults to "::", the mouse button IDs are those of the i3bar (i.e. 1 for left mouse button, 2 for middle mouse button, 3 for right, etc.) and the command is simply a string that will be executed. In the string, you can use the following format identifiers:
- name
- instance
- button
For example:
-e disk::1::"nautilus {instance}"
##Examples Here are some screenshots for all themes that currently exist (please note that for the "Powerline" themes, you need to select a font that supports the Powerline icons - see Powerline Fonts):
Solarized Powerline (-t solarized-powerline
):
Solarized (-t solarized
):
Powerline (-t powerline
):
Default (nothing or -t default
):
##Full Synopsis
$ bumblebee-status -h
usage: bumblebee-status [-h] [-m MODULES [MODULES ...]] [-e EVENTS [EVENTS ...]]
[-l] [-t THEME] [-i INTERVAL] [-s SPLIT]
display system data in the i3bar
optional arguments:
-h, --help show this help message and exit
-m MODULES [MODULES ...], --modules MODULES [MODULES ...]
List of modules to load. The order of the list
determines their order in the i3bar (from left to
right)
-e EVENTS [EVENTS ...], --events EVENTS [EVENTS ...]
List of click events that should be handled. Format
is: <module name><splitter, see -s><button
ID><splitter><command to execute>
-l, --list List all available modules and themes
-t THEME, --theme THEME
Specify which theme to use for drawing the modules
-i INTERVAL, --interval INTERVAL
Specify the update interval
-s SPLIT, --split SPLIT
Specify string to use for splitting modules and their
arguments
##Further Details
- If you want to write your own module: How to write a module - Contributions are of course highly welcome an appreciated!
- If you want to write your own theme: How to write a theme
##Alternatives
If bumblebee-status doesn't work for you, I'd be grateful to hear why. Having said that, if you are searching for tools for the i3bar, here's some I found really great:
- i3blocks: I really like the modular concept and the flexibility in providing custom commands & clickable events (something still on the roadmap for bumblebee-status ;) )
- py3status: I used py3status for a really long time, really useful!
- i3bar with conky: Intriguing approach
Thanks a lot for reading until here, I hope you find this tool useful!