Code Monkey home page Code Monkey logo

bumblebee-status's Introduction

bumblebee-status

Build Status Code Climate Test Coverage Issue Count

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.

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):

Gruvbox Powerline

Solarized Powerline (-t solarized-powerline):

Solarized Powerline

Gruvbox (-t gruvbox):

Gruvbox

Solarized (-t solarized):

Solarized

Powerline (-t powerline):

Powerline

Default (nothing or -t default):

Default

bumblebee-status's People

Contributors

adam-dej avatar alrayyes avatar antouank avatar avindra avatar batman-nair avatar brunosmmm avatar camilo-celis avatar ccoors avatar chrismullins avatar chrugi avatar cjlarose avatar codingo avatar dnfm avatar fernandochu avatar fredj avatar graynk avatar ibrokemypie avatar jmg5e avatar max-kov avatar meain avatar mijoharas avatar miljanic avatar msoulier avatar nayaverdier avatar quartje avatar tobi-wan-kenobi avatar ultimatepancake avatar velislavgerov avatar yashar-sb-sb avatar yvesh avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.