430 lines
14 KiB
ReStructuredText
430 lines
14 KiB
ReStructuredText
bumblebee-status
|
||
================
|
||
|
||
|Build Status| |Code Climate| |Test Coverage| |Issue Count|
|
||
|
||
**Many, many thanks to all contributors! As of now, 54 of the modules
|
||
are from various contributors (!), and only 19 from myself.**
|
||
|
||
.. figure:: ./Modules.md
|
||
:alt: List of modules
|
||
|
||
List of modules
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-solarized.png
|
||
:alt: Solarized Powerline
|
||
|
||
Solarized Powerline
|
||
|
||
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…)
|
||
|
||
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
|
||
|
||
Supported FontAwesome version: 4 (free version of 5 doesn’t include some
|
||
of the icons)
|
||
|
||
Explicitly unsupported Python versions: 3.2 (missing unicode literals)
|
||
|
||
:information_source: The |Font Awesome| is required for all themes that
|
||
contain icons (because that is the font that includes these icons).
|
||
Please refer to your distribution’s package management on how to install
|
||
them, or get them from their website directly. Also, please note that
|
||
Font Awesome removed some icons used by ``bumblebee-status`` from the
|
||
free set in version 5, so if possible, stick with 4.
|
||
|
||
::
|
||
|
||
# Font Awesome installation instructions
|
||
|
||
# Arch Linux
|
||
$ sudo pacman -S awesome-terminal-fonts
|
||
|
||
# FreeBSD
|
||
$ sudo pkg install font-awesome
|
||
$ sudo pkg install py36-tzlocal py36-pytz py36-netifaces py36-psutil py36-requests #for dependencies
|
||
|
||
# Other
|
||
# see https://github.com/gabrielelana/awesome-terminal-fonts
|
||
|
||
Example usage:
|
||
|
||
::
|
||
|
||
bar {
|
||
status_command <path>/bumblebee-status -m cpu memory battery time pasink pasource -p time.format="%H:%M" -t solarized
|
||
}
|
||
|
||
Documentation
|
||
=============
|
||
|
||
See `the
|
||
wiki <https://github.com/tobi-wan-kenobi/bumblebee-status/wiki>`__ for
|
||
documentation.
|
||
|
||
See
|
||
`FAQ <https://github.com/tobi-wan-kenobi/bumblebee-status/wiki/FAQ>`__
|
||
for, well, FAQs.
|
||
|
||
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
|
||
|
||
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.
|
||
|
||
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 their parameters) 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.
|
||
|
||
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
|
||
|
||
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.
|
||
|
||
Advanced Usage
|
||
~~~~~~~~~~~~~~
|
||
|
||
If you want to have a minimal bar that stays out of the way, you can use
|
||
the ``-a`` or ``--autohide`` switch to specify a list of module names.
|
||
All those modules will only be displayed when (and as long as) their
|
||
state is either warning or critical (high CPU usage, low disk space,
|
||
etc.). As long as the module is in a “normal” state and does not require
|
||
attention, it will remain hidden. Note that this parameter is specified
|
||
*in addition* to ``-m`` (i.e. to autohide the CPU module, you would use
|
||
``bumblebee-status -m cpu memory traffic -a cpu``).
|
||
|
||
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’,
|
||
‘currency’, ‘sun’)
|
||
- power (for the module ‘battery’)
|
||
- dbus (for the module ‘spotify’, ‘deezer’)
|
||
- i3ipc (for the module ‘title’)
|
||
- pacman-contrib (for module ‘arch-update’)
|
||
- docker (for the module ‘docker_ps’)
|
||
- pytz (for the module ‘datetimetz’)
|
||
- localtz (for the module ‘datetimetz’)
|
||
- suntime (for the module ‘sun’)
|
||
- feedparser (for the module ‘rss’)
|
||
|
||
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’)
|
||
- progress (for module ‘progress’)
|
||
- i3exit (for module ‘system’)
|
||
|
||
Examples
|
||
========
|
||
|
||
Here are some screenshots for all themes that currently exist:
|
||
|
||
: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.
|
||
|
||
:exclamation: If you want to add your own theme, just drop it into
|
||
``~/.config/bumblebee-status/themes/``
|
||
|
||
Gruvbox Powerline (``-t gruvbox-powerline``) (contributed by
|
||
[@TheEdgeOfRage](https://github.com/TheEdgeOfRage)):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-gruvbox.png
|
||
:alt: Gruvbox Powerline
|
||
|
||
Gruvbox Powerline
|
||
|
||
Gruvbox Powerline Light (``-t gruvbox-powerline-light``) (contributed by
|
||
`freed00m <https://github.com/freed00m>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/gruvbox-powerline-light.png
|
||
:alt: Gruvbox Powerline Light
|
||
|
||
Gruvbox Powerline Light
|
||
|
||
Solarized Powerline (``-t solarized-powerline``):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-solarized.png
|
||
:alt: Solarized Powerline
|
||
|
||
Solarized Powerline
|
||
|
||
Gruvbox (``-t gruvbox``):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/gruvbox.png
|
||
:alt: Gruvbox
|
||
|
||
Gruvbox
|
||
|
||
Gruvbox Light (``-t gruvbox-light``) (contributed by
|
||
`freed00m <https://github.com/freed00m>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/gruvbox-light.png
|
||
:alt: Gruvbox Light
|
||
|
||
Gruvbox Light
|
||
|
||
Solarized (``-t solarized``):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/solarized.png
|
||
:alt: Solarized
|
||
|
||
Solarized
|
||
|
||
Powerline (``-t powerline``):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline.png
|
||
:alt: Powerline
|
||
|
||
Powerline
|
||
|
||
Greyish Powerline (``-t greyish-powerline``) (contributed by Joshua
|
||
Bark):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/powerline-greyish.png
|
||
:alt: Greyish Powerline
|
||
|
||
Greyish Powerline
|
||
|
||
Iceberg (``-t iceberg``) (contributed by
|
||
`whzup <https://github.com/whzup>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/iceberg.png
|
||
:alt: Iceberg
|
||
|
||
Iceberg
|
||
|
||
Iceberg Powerline (``-t iceberg-powerline``) (contributed by
|
||
`whzup <https://github.com/whzup>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/iceberg-powerline.png
|
||
:alt: Iceberg Powerline
|
||
|
||
Iceberg Powerline
|
||
|
||
Iceberg Dark Powerline (``-t iceberg-dark-powerline``) (contributed by
|
||
`gkeep <https://github.com/gkeep>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/iceberg-dark-powerline.png
|
||
:alt: Iceberg Dark Powerline
|
||
|
||
Iceberg Dark Powerline
|
||
|
||
Iceberg Rainbow (``-t iceberg-rainbow``) (contributed by
|
||
`whzup <https://github.com/whzup>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/iceberg-rainbow.png
|
||
:alt: Iceberg Rainbow
|
||
|
||
Iceberg Rainbow
|
||
|
||
One Dark Powerline (``-t onedark-powerline``) (contributed by
|
||
`dillasyx <https://github.com/dillasyx>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/onedark-powerline.png
|
||
:alt: One Dark Powerline
|
||
|
||
One Dark Powerline
|
||
|
||
Dracula Powerline (-t dracula-powerline) (contributed by
|
||
`xsteadfastx <https://github.com/xsteadfastx>`__):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/dracula-powerline.png
|
||
:alt: Dracula Powerline
|
||
|
||
Dracula Powerline
|
||
|
||
Default (nothing or ``-t default``):
|
||
|
||
.. figure:: https://github.com/tobi-wan-kenobi/bumblebee-status/blob/master/screenshots/themes/default.png
|
||
:alt: Default
|
||
|
||
Default
|
||
|
||
.. |Build Status| image:: https://travis-ci.org/tobi-wan-kenobi/bumblebee-status.svg?branch=master
|
||
:target: https://travis-ci.org/tobi-wan-kenobi/bumblebee-status
|
||
.. |Code Climate| image:: https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/gpa.svg
|
||
:target: https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status
|
||
.. |Test Coverage| image:: https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/coverage.svg
|
||
:target: https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/coverage
|
||
.. |Issue Count| image:: https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status/badges/issue_count.svg
|
||
:target: https://codeclimate.com/github/tobi-wan-kenobi/bumblebee-status
|
||
.. |Font Awesome| image:: https://fontawesome.com/
|