2016-12-10 20:05:02 +01:00
# bumblebee-status
2016-12-11 13:50:33 +01:00
[![Build Status ](https://travis-ci.org/tobi-wan-kenobi/bumblebee-status.svg?branch=master )](https://travis-ci.org/tobi-wan-kenobi/bumblebee-status)
[![Code Climate ](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/gpa.svg )](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status)
[![Test Coverage ](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/coverage.svg )](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/coverage)
[![Issue Count ](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/issue_count.svg )](https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status)
2016-12-10 20:05:02 +01:00
2018-11-17 13:38:35 +01:00
**Many, many thanks to all contributors! As of now, 33 of the modules are from various contributors (!), and only 17 from myself.**
2017-06-12 19:00:17 +02:00
2018-04-14 05:52:54 +02:00
![Solarized Powerline ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-solarized.png )
2016-12-10 20:05:02 +01:00
bumblebee-status is a modular, theme-able status line generator for the [i3 window manager ](https://i3wm.org/ ).
Focus is on:
* Ease of use (no configuration files!)
* Theme support
* Extensibility (of course...)
2017-08-02 19:34:54 +02:00
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).
2016-12-10 20:05:02 +01:00
I hope you like it and appreciate any kind of feedback: Bug reports, Feature requests, etc. :)
Thanks a lot!
2017-09-16 16:48:13 +02:00
Required i3wm version: 4.12+ (in earlier versions, blocks won't have background colors)
2017-02-25 07:54:03 +01:00
Supported Python versions: 2.7, 3.3, 3.4, 3.5, 3.6
2018-04-05 08:06:47 +02:00
Supported FontAwesome version: 4 (free version of 5 doesn't include some of the icons)
2017-02-25 07:54:03 +01:00
Explicitly unsupported Python versions: 3.2 (missing unicode literals)
2018-10-13 15:43:42 +02:00
Example usage:
```
bar {
2018-10-17 18:51:24 +02:00
status_command < path > /bumblebee-status -m cpu memory battery time pasink pasource -p time.format="%H:%M" -t solarized
2018-10-13 15:43:42 +02:00
}
```
2016-12-10 20:05:02 +01:00
# Documentation
See [the wiki ](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki ) for documentation.
2018-01-13 19:33:43 +01:00
See [FAQ ](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/FAQ ) for, well, FAQs.
2016-12-10 20:05:02 +01:00
Other resources:
* A list of [available modules ](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/Available-Modules )
* [How to write a theme ](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/How-to-write-a-theme )
* [How to write a module ](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/How-to-write-a-module )
# Installation
```
$ git clone git://github.com/tobi-wan-kenobi/bumblebee-status
```
2018-04-14 05:56:18 +02:00
# Dependencies
[Available modules ](https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/Available-Modules ) lists the dependencies (Python modules and external executables)
for each module. If you are not using a module, you don't need the dependencies.
2016-12-10 20:05:02 +01:00
# Usage
2017-04-02 08:34:17 +02:00
## Normal usage
2017-08-20 10:59:39 +02:00
In your i3wm configuration, modify the *status_command* for your i3bar like this:
2016-12-10 20:05:02 +01:00
```
bar {
2018-10-17 18:51:24 +02:00
status_command < path to bumblebee-status / bumblebee-status > -m < list of modules > -p < list of module parameters > -t < theme >
2016-12-10 20:05:02 +01:00
}
```
You can retrieve a list of modules and themes by entering:
```
$ cd bumblebee-status
$ ./bumblebee-status -l themes
$ ./bumblebee-status -l modules
```
2017-08-20 10:59:39 +02:00
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.
2017-07-12 18:42:02 +02:00
2018-01-17 18:56:12 +01:00
Parameters can also be used to override theme settings, such as:
```
$ ./bumblebee-status -p < module > .theme.< theme field > =< value >
# for example, to get a spacer with a red background:
$ ./bumblebee-status -m spacer -p spacer.theme.bg=#ff0000
```
2017-07-12 18:42:02 +02:00
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
```
2017-03-16 21:04:24 +01:00
To change the update interval, use:
```
$ ./bumblebee-status -m < list of modules > -p interval=< interval in seconds >
```
2016-12-10 20:05:02 +01:00
As a simple example, this is what my i3 configuration looks like:
```
bar {
font pango:Inconsolata 10
position top
tray_output none
2016-12-11 13:12:22 +01:00
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
2016-12-10 20:05:02 +01:00
}
```
Restart i3wm and - that's it!
2017-10-23 17:14:00 +02:00
## 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
2017-10-23 17:14:57 +02:00
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` .
2017-10-23 17:14:00 +02:00
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}"`
2017-04-02 08:34:17 +02:00
## 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 >
```
2017-07-08 08:11:52 +02:00
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.
2017-04-02 08:34:17 +02:00
2017-02-26 08:28:30 +01:00
# Required Modules
Modules and commandline utilities are only required for modules, the core itself has no external dependencies at all.
2017-04-23 07:24:36 +02:00
* psutil (for the modules 'cpu', 'memory', 'traffic')
2017-07-07 19:03:54 +02:00
* netifaces (for the modules 'nic', 'traffic')
2018-03-14 08:35:51 +01:00
* requests (for the modules 'weather', 'github', 'getcrypto', 'stock', 'hipchat', 'currency')
2017-08-04 10:41:37 +02:00
* power (for the module 'battery')
2017-08-04 10:47:05 +02:00
* dbus (for the module 'spotify')
2018-01-02 09:30:40 +01:00
* i3ipc (for the module 'title')
2018-09-09 00:06:28 +02:00
* pacman-contrib (for module 'arch-update')
2018-10-18 12:14:06 +02:00
* docker (for the module 'docker_ps')
2017-02-26 08:28:30 +01:00
# 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')
2017-05-26 19:48:23 +02:00
* mpc (for the module 'mpd')
2017-06-01 18:27:03 +02:00
* bluez / blueman (for module 'bluetooth')
* dbus-send (for module 'bluetooth')
2017-06-11 14:45:14 +02:00
* nvidia-smi (for module 'nvidiagpu')
2017-07-22 11:44:21 +02:00
* sensors (for module 'sensors', as fallback)
2017-11-24 20:07:10 +01:00
* zpool (for module 'zpool')
2018-09-07 17:31:47 +02:00
* progress (for module 'progress')
2016-12-10 20:05:02 +01:00
# Examples
Here are some screenshots for all themes that currently exist:
2017-04-22 07:43:31 +02:00
:exclamation: Some themes (all 'Powerline' themes) require [Font Awesome ](http://fontawesome.io/ ) and a powerline-compatible font ([powerline-fonts](https://github.com/powerline/fonts), for example) to display all icons correctly.
2017-02-24 18:28:27 +01:00
2018-04-01 19:45:56 +02:00
Gruvbox Powerline (`-t gruvbox-powerline`) (contributed by [@TheEdgeOfRage ](https://github.com/TheEdgeOfRage )):
2016-12-10 20:05:02 +01:00
![Gruvbox Powerline ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-gruvbox.png )
2018-05-09 18:28:51 +02:00
Gruvbox Powerline Light (`-t gruvbox-powerline-light`) (contributed by [freed00m ](https://github.com/freed00m )):
2018-05-09 18:25:56 +02:00
![Gruvbox Powerline Light ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/gruvbox-powerline-light.png )
2016-12-10 20:05:02 +01:00
Solarized Powerline (`-t solarized-powerline`):
![Solarized Powerline ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-solarized.png )
2017-04-21 07:23:43 +02:00
Gruvbox (`-t gruvbox`):
![Gruvbox ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/gruvbox.png )
2018-05-09 18:28:51 +02:00
Gruvbox Light (`-t gruvbox-light`) (contributed by [freed00m ](https://github.com/freed00m )):
2018-05-09 18:25:56 +02:00
![Gruvbox Light ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/gruvbox-light.png )
2016-12-10 20:05:02 +01:00
Solarized (`-t solarized`):
![Solarized ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/solarized.png )
Powerline (`-t powerline`):
![Powerline ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline.png )
2018-10-05 19:07:38 +02:00
Greyish Powerline (`-t greyish-powerline`) (contributed by Joshua Bark):
2018-03-17 20:14:49 +01:00
![Greyish Powerline ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-greyish.png )
2018-09-13 20:19:56 +02:00
Iceberg (`-t iceberg`) (contributed by [whzup ](https://github.com/whzup )):
![Iceberg ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/iceberg.png )
2018-09-10 18:16:47 +02:00
Iceberg Powerline (`-t iceberg-powerline`) (contributed by [whzup ](https://github.com/whzup )):
2018-09-10 18:15:55 +02:00
![Iceberg Powerline ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/iceberg-powerline.png )
2018-09-19 18:11:37 +02:00
Iceberg Rainbow (`-t iceberg-rainbow`) (contributed by [whzup ](https://github.com/whzup )):
![Iceberg Rainbow ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/iceberg-rainbow.png )
2016-12-10 20:05:02 +01:00
Default (nothing or `-t default` ):
![Default ](https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/default.png )