Skip to content
tobi-wan-kenobi edited this page Dec 2, 2016 · 42 revisions

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

  1. Design Goals
  2. Installation
  3. Usage
  4. Examples
  5. Full Synopsis
  6. Further Details
  7. Alternatives

##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

General

$ git clone git://github.com/tobi-wan-kenobi/bumblebee-status

Required Python Modules

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
  • netifaces

Required tools

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> -p <parameters> -t <theme>
}

Parameters generally are of the format <module name>.<parameter name>, for example: time.format="%X"

You can retrieve a list of modules and themes by entering:

$ cd bumblebee-status
$ ./bumblebee-status -l themes
$ ./bumblebee-status -l modules

If you want to use a module multiple times, you can assign an "alias" to it (mostly so that you can differentiate it in any on-click events). To do so, simply append :<alias> to the module name. If you do that, any parameter that you provide has to use the alias instead of the module name.

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:/ load cpu memory battery date time pasink pasource dnf -p 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

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}"

##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 Powerline

Gruvbox Powerline (-t gruvbox-powerline): Gruvbox Powerline

Solarized (-t solarized): Solarized

Powerline (-t powerline): Powerline

Default (nothing or -t default): Default

##Full Synopsis

$ bumblebee-status -h
usage: bumblebee-status [-h] [-m MODULES [MODULES ...]] [-l {modules,themes}]
                        [-p PARAMETERS [PARAMETERS ...]] [-t THEME]

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)
  -l {modules,themes}, --list {modules,themes}
                        List: 'modules', 'themes'
  -p PARAMETERS [PARAMETERS ...], --parameters PARAMETERS [PARAMETERS ...]
                        Provide configuration parameters to individual
                        modules.
  -t THEME, --theme THEME
                        Specify which theme to use for drawing the modules

##Further Details

##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!

Clone this wiki locally