# Table of modules
|Name |Description |
|-----|------------|
|__pulseaudio |Displays volume and mute status and controls for PulseAudio devices. Use wheel up and down to change volume, left click mutes, right click opens pavucontrol.<br><br>Aliases: pasink (use this to control output instead of input), pasource<br><br>Parameters:<br>    * pulseaudio.autostart: If set to 'true' (default is 'false'), automatically starts the pulseaudio daemon if it is not running<br>    * pulseaudio.percent_change: How much to change volume by when scrolling on the module (default is 2%)<br>    * pulseaudio.limit: Upper limit for setting the volume (default is 0%, which means 'no limit')<br>                        Note: If the left and right channels have different volumes, the limit might not be reached exactly.<br>    * pulseaudio.showbars: 1 for showing volume bars, requires --markup=pango;<br>                           0 for not showing volume bars (default)<br><br>Requires the following executable:<br>    * pulseaudio<br>    * pactl<br>    * pavucontrol |
|amixer |get volume level<br><br>Parameters:<br>    * amixer.device: Device to use, defaults to "Master,0" |
|apt |Displays APT package update information (\<to upgrade\>/\<to remove \>)<br>Requires the following packages:<br>    * aptitude |
|arch-update |Check updates to Arch Linux.<br><br>Requires the following executable:<br>    * checkupdates (from pacman-contrib) |
|battery |Displays battery status, remaining percentage and charging information.<br><br>Parameters:<br>    * battery.device              : Comma-separated list of battery devices to read information from (defaults to auto for auto-detection)<br>    * battery.warning             : Warning threshold in % of remaining charge (defaults to 20)<br>    * battery.critical            : Critical threshold in % of remaining charge (defaults to 10)<br>    * battery.showdevice          : If set to 'true', add the device name to the widget (defaults to False)<br>    * battery.decorate            : If set to 'false', hides additional icons (charging, etc.) (defaults to True)<br>    * battery.showpowerconsumption: If set to 'true', show current power consumption (defaults to False)<br>    * battery.compact-devices     : If set to 'true', compacts multiple batteries into a single entry (default to False) |
|battery-upower |Displays battery status, remaining percentage and charging information.<br><br>Parameters:<br>    * battery-upower.warning      : Warning threshold in % of remaining charge (defaults to 20)<br>    * battery-upower.critical     : Critical threshold in % of remaining charge (defaults to 10)<br>    * battery-upower.showremaining : If set to true (default) shows the remaining time until the batteries are completely discharged |
|bluetooth |Displays bluetooth status (Bluez). Left mouse click launches manager app,<br>right click toggles bluetooth. Needs dbus-send to toggle bluetooth state.<br><br>Parameters:<br>    * bluetooth.device : the device to read state from (default is hci0)<br>    * bluetooth.manager : application to launch on click (blueman-manager)<br>    * bluetooth.dbus_destination : dbus destination (defaults to org.blueman.Mechanism)<br>    * bluetooth.dbus_destination_path : dbus destination path (defaults to /)<br>    * bluetooth.right_click_popup : use popup menu when right-clicked (defaults to True) |
|bluetooth2 |Displays bluetooth status. Left mouse click launches manager app,<br>right click toggles bluetooth. Needs dbus-send to toggle bluetooth state and<br>python-dbus to count the number of connections<br><br>Parameters:<br>    * bluetooth.manager : application to launch on click (blueman-manager) |
|brightness |Displays the brightness of a display<br><br>Parameters:<br>    * brightness.step: The amount of increase/decrease on scroll in % (defaults to 2) |
|caffeine |Enable/disable automatic screen locking.<br><br>Requires the following executables:<br>    * xdg-screensaver<br>    * xdotool<br>    * xprop (as dependency for xdotool)<br>    * notify-send |
|cmus |Displays information about the current song in cmus.<br><br>Requires the following executable:<br>    * cmus-remote<br><br>Parameters:<br>    * cmus.format: Format string for the song information. Tag values can be put in curly brackets (i.e. {artist})<br>      Additional tags:<br>        * {file} - full song file name<br>        * {file1} - song file name without path prefix<br>                    if {file} = '/foo/bar.baz', then {file1} = 'bar.baz'<br>        * {file2} - song file name without path prefix and extension suffix<br>                    if {file} = '/foo/bar.baz', then {file2} = 'bar'<br>    * cmus.layout: Space-separated list of widgets to add. Possible widgets are the buttons/toggles cmus.prev, cmus.next, cmus.shuffle and cmus.repeat, and the main display with play/pause function cmus.main.<br>    * cmus.server: The address of the cmus server, either a UNIX socket or host[:port]. Connects to the local instance by default.<br>    * cmus.passwd: The password to use for the TCP/IP connection. |
|cpu |Displays CPU utilization across all CPUs.<br><br>Parameters:<br>    * cpu.warning : Warning threshold in % of CPU usage (defaults to 70%)<br>    * cpu.critical: Critical threshold in % of CPU usage (defaults to 80%)<br>    * cpu.format  : Format string (defaults to '{:.01f}%') |
|cpu2 |Multiwidget CPU module<br><br>Can display any combination of:<br><br>    * max CPU frequency<br>    * total CPU load in percents (integer value)<br>    * per-core CPU load as graph - either mono or colored<br>    * CPU temperature (in Celsius degrees)<br>    * CPU fan speed<br><br>Requirements:<br><br>    * the psutil Python module for the first three items from the list above<br>    * sensors executable for the rest<br><br>Parameters:<br>    * cpu2.layout: Space-separated list of widgets to add.<br>      Possible widgets are:<br>        * cpu2.maxfreq<br>        * cpu2.cpuload<br>        * cpu2.coresload<br>        * cpu2.temp<br>        * cpu2.fanspeed<br>    * cpu2.colored: 1 for colored per core load graph, 0 for mono (default)<br>                    if this is set to 1, use --markup=pango<br>    * cpu2.temp_pattern: pattern to look for in the output of 'sensors -u';<br>                         required if cpu2.temp widged is used<br>    * cpu2.fan_pattern: pattern to look for in the output of 'sensors -u';<br>                        required if cpu2.fanspeed widged is used<br><br>Note: if you are getting 'n/a' for CPU temperature / fan speed, then you're<br>lacking the aforementioned pattern settings or they have wrong values. |
|currency |Displays currency exchange rates. Currently, displays currency between GBP and USD/EUR only.<br><br>Requires the following python packages:<br>    * requests<br><br>Parameters:<br>    * currency.interval: Interval in minutes between updates, default is 1.<br>    * currency.source: Source currency (ex. 'GBP', 'EUR'). Defaults to 'auto', which infers the local one from IP address.<br>    * currency.destination: Comma-separated list of destination currencies (defaults to 'USD,EUR')<br>    * currency.sourceformat: String format for source formatting; Defaults to '{}: {}' and has two variables,<br>                             the base symbol and the rate list<br>    * currency.destinationdelimiter: Delimiter used for separating individual rates (defaults to '|')<br><br>Note: source and destination names right now must correspond to the names used by the API of https://markets.ft.com |
|date |Displays the current date and time.<br><br>Parameters:<br>    * date.format: strftime()-compatible formatting string<br>    * date.locale: locale to use rather than the system default |
|datetime |Displays the current date and time.<br><br>Parameters:<br>    * datetime.format: strftime()-compatible formatting string<br>    * datetime.locale: locale to use rather than the system default |
|datetimetz |Displays the current date and time with timezone options.<br><br>Parameters:<br>    * datetimetz.format   : strftime()-compatible formatting string<br>    * datetimetz.timezone : IANA timezone name<br>    * datetz.format       : alias for datetimetz.format<br>    * timetz.format       : alias for datetimetz.format<br>    * timetz.timezone     : alias for datetimetz.timezone<br>    * datetimetz.locale   : locale to use rather than the system default<br>    * datetz.locale       : alias for datetimetz.locale<br>    * timetz.locale       : alias for datetimetz.locale<br>    * timetz.timezone     : alias for datetimetz.timezone |
|datetz |Displays the current date and time.<br><br>Parameters:<br>    * date.format: strftime()-compatible formatting string<br>    * date.locale: locale to use rather than the system default |
|deadbeef |Displays the current song being played in DeaDBeeF and provides<br>some media control bindings.<br>Left click toggles pause, scroll up skips the current song, scroll<br>down returns to the previous song.<br><br>Requires the following library:<br>    * subprocess<br>Parameters:<br>    * deadbeef.format:    Format string (defaults to '{artist} - {title}')<br>                          Available values are: {artist}, {title}, {album}, {length},<br>                                                {trackno}, {year}, {comment},<br>                                                {copyright}, {time}<br>                          This is deprecated, but much simpler.<br>    * deadbeef.tf_format: A foobar2000 title formatting-style format string.<br>                          These can be much more sophisticated than the standard<br>                          format strings. This is off by default, but specifying<br>                          any tf_format will enable it. If both deadbeef.format<br>                          and deadbeef.tf_format are specified, deadbeef.tf_format<br>                          takes priority.<br>    * deadbeef.tf_format_if_stopped: Controls whether or not the tf_format format<br>                          string should be displayed even if no song is paused or<br>                          playing. This could be useful if you want to implement<br>                          your own stop strings with the built in logic. Any non-<br>                          null value will enable this (by default the module will<br>                          hide itself when the player is stopped).<br>    * deadbeef.previous:  Change binding for previous song (default is left click)<br>    * deadbeef.next:      Change binding for next song (default is right click)<br>    * deadbeef.pause:     Change binding for toggling pause (default is middle click)<br>    Available options for deadbeef.previous, deadbeef.next and deadbeef.pause are:<br>        LEFT_CLICK, RIGHT_CLICK, MIDDLE_CLICK, SCROLL_UP, SCROLL_DOWN |
|debug |Shows that debug is enabled |
|deezer |Displays the current song being played<br>Requires the following library:<br>    * python-dbus<br>Parameters:<br>    * deezer.format:   Format string (defaults to '{artist} - {title}')<br>                        Available values are: {album}, {title}, {artist}, {trackNumber}, {playbackStatus}<br>    * deezer.previous: Change binding for previous song (default is left click)<br>    * deezer.next:     Change binding for next song (default is right click)<br>    * deezer.pause:    Change binding for toggling pause (default is middle click)<br>    Available options for deezer.previous, deezer.next and deezer.pause are:<br>        LEFT_CLICK, RIGHT_CLICK, MIDDLE_CLICK, SCROLL_UP, SCROLL_DOWN |
|disk |Shows free diskspace, total diskspace and the percentage of free disk space.<br><br>Parameters:<br>    * disk.warning: Warning threshold in % of disk space (defaults to 80%)<br>    * disk.critical: Critical threshold in % of disk space (defaults ot 90%)<br>    * disk.path: Path to calculate disk usage from (defaults to /)<br>    * disk.open: Which application / file manager to launch (default xdg-open)<br>    * disk.format: Format string, tags {path}, {used}, {left}, {size} and {percent} (defaults to '{path} {used}/{size} ({percent:05.02f}%)') |
|dnf |Displays DNF package update information (\<security\>/\<bugfixes\>/\<enhancements\>/\<other\>)<br><br>Requires the following executable:<br>    * dnf<br><br>Parameters:<br>    * dnf.interval: Time in minutes between two consecutive update checks (defaults to 30 minutes) |
|docker_ps |Displays the number of docker containers running<br><br>Requires the following python packages:<br>    * docker |
|dunst |Toggle dunst notifications. |
|error |Shows bumblebee-status errors |
|getcrypto |Displays the price of a cryptocurrency.<br><br>Requires the following python packages:<br>    * requests<br><br>Parameters:<br>    * getcrypto.interval: Interval in seconds for updating the price, default is 120, less than that will probably get your IP banned.<br>    * getcrypto.getbtc: 0 for not getting price of BTC, 1 for getting it (default).<br>    * getcrypto.geteth: 0 for not getting price of ETH, 1 for getting it (default).<br>    * getcrypto.getltc: 0 for not getting price of LTC, 1 for getting it (default).<br>    * getcrypto.getcur: Set the currency to display the price in, usd is the default. |
|git |Print the branch and git status for the<br>currently focused window.<br><br>Requires:<br>    * xcwd<br>    * Python module 'pygit2' |
|github |Displays the unread GitHub notifications for a GitHub user<br><br>Requires the following library:<br>    * requests<br><br>Parameters:<br>    * github.token: GitHub user access token, the token needs to have the 'notifications' scope.<br>    * github.interval: Interval in minutes between updates, default is 5. |
|gpmdp |Displays information about the current song in Google Play music player.<br><br>Requires the following executable:<br>    * gpmdp-remote |
|hddtemp |Fetch hard drive temeperature data from a hddtemp daemon<br>that runs on localhost and default port (7634) |
|hostname |Displays the system hostname. |
|http_status |Display HTTP status code<br><br>Parameters:<br>    * http__status.label: Prefix label (optional)<br>    * http__status.target: Target to retrieve the HTTP status from<br>    * http__status.expect: Expected HTTP status |
|indicator |Displays the indicator status, for numlock, scrolllock and capslock <br><br>Parameters:<br>    * indicator.include: Comma-separated list of interface prefixes to include (defaults to 'numlock,capslock')<br>    * indicator.signalstype: If you want the signali type color to be 'critical' or 'warning' (defaults to 'warning') |
|kernel |Shows Linux kernel version information |
|layout |Displays and changes the current keyboard layout<br><br>Requires the following executable:<br>    * setxkbmap |
|layout-xkb |Displays the current keyboard layout using libX11<br><br>Requires the following library:<br>    * libX11.so.6<br>and python module:<br>    * xkbgroup<br><br>Parameters:<br>    * layout-xkb.showname: Boolean that indicate whether the full name should be displayed. Defaults to false (only the symbol will be displayed)<br>    * layout-xkb.show_variant: Boolean that indecates whether the variant name should be displayed. Defaults to true. |
|layout-xkbswitch |Displays and changes the current keyboard layout<br><br>Requires the following executable:<br>    * xkb-switch |
|libvirtvms |Displays count of running libvirt VMs.<br>Required the following python packages:<br>        * libvirt |
|load |Displays system load.<br><br>Parameters:<br>    * load.warning : Warning threshold for the one-minute load average (defaults to 70% of the number of CPUs)<br>    * load.critical: Critical threshold for the one-minute load average (defaults to 80% of the number of CPUs) |
|memory |Displays available RAM, total amount of RAM and percentage available.<br><br>Parameters:<br>    * memory.warning : Warning threshold in % of memory used (defaults to 80%)<br>    * memory.critical: Critical threshold in % of memory used (defaults to 90%)<br>    * memory.format: Format string (defaults to '{used}/{total} ({percent:05.02f}%)')<br>    * memory.usedonly: Only show the amount of RAM in use (defaults to False). Same as memory.format='{used}' |
|mocp |Displays information about the current song in mocp. Left click toggles play/pause. Right click toggles shuffle.<br><br>Requires the following executable:<br>    * mocp<br><br>Parameters:<br>    * mocp.format: Format string for the song information. Replace string sequences with the actual information:<br>         %state     State<br>         %file      File<br>         %title     Title, includes track, artist, song title and album<br>         %artist    Artist<br>         %song      SongTitle<br>         %album     Album<br>         %tt        TotalTime<br>         %tl        TimeLeft<br>         %ts        TotalSec<br>         %ct        CurrentTime<br>         %cs        CurrentSec<br>         %b         Bitrate<br>         %r         Sample rate |
|mpd |Displays information about the current song in mpd.<br><br>Requires the following executable:<br>    * mpc<br><br>Parameters:<br>    * mpd.format: Format string for the song information.<br>      Supported tags (see `man mpc` for additional information)<br>        * {name}<br>        * {artist}<br>        * {album}<br>        * {albumartist}<br>        * {comment}<br>        * {composer}<br>        * {date}<br>        * {originaldate}<br>        * {disc}<br>        * {genre}<br>        * {performer}<br>        * {title}<br>        * {track}<br>        * {time}<br>        * {file}<br>        * {id}<br>        * {prio}<br>        * {mtime}<br>        * {mdate}<br>      Additional tags:<br>        * {position} - position of currently playing song<br>                       not to be confused with %position% mpc tag<br>        * {duration} - duration of currently playing song<br>        * {file1} - song file name without path prefix<br>                    if {file} = '/foo/bar.baz', then {file1} = 'bar.baz'<br>        * {file2} - song file name without path prefix and extension suffix<br>                    if {file} = '/foo/bar.baz', then {file2} = 'bar'<br>    * mpd.host: MPD host to connect to. (mpc behaviour by default)<br>    * mpd.layout: Space-separated list of widgets to add. Possible widgets are the buttons/toggles mpd.prev, mpd.next, mpd.shuffle and mpd.repeat, and the main display with play/pause function mpd.main. |
|network_traffic |Displays network traffic<br>* No extra configuration needed |
|nic |Displays the name, IP address(es) and status of each available network interface.<br><br>Requires the following python module:<br>    * netifaces<br><br>Parameters:<br>    * nic.exclude: Comma-separated list of interface prefixes to exclude (defaults to 'lo,virbr,docker,vboxnet,veth,br')<br>    * nic.include: Comma-separated list of interfaces to include<br>    * nic.states: Comma-separated list of states to show (prefix with '^' to invert - i.e. ^down -\> show all devices that are not in state down)<br>    * nic.format: Format string (defaults to '{intf} {state} {ip} {ssid}') |
|notmuch_count |Displays the result of a notmuch count query<br>   default : unread emails which path do not contained 'Trash' (notmuch count 'tag:unread AND NOT path:/.*Trash.*/')<br><br>Parameters:<br>    * notmuch_count.query: notmuch count query to show result <br><br>Errors:<br>    if the notmuch query failed, the shown value is  -1<br><br>Dependencies:<br>    notmuch (https://notmuchmail.org/) |
|nvidiagpu |Displays GPU name, temperature and memory usage.<br><br>Parameters:<br>   * nvidiagpu.format: Format string (defaults to '{name}: {temp}°C %{usedmem}/{totalmem} MiB')<br>                       Available values are: {name} {temp} {mem_used} {mem_total} {fanspeed} {clock_gpu} {clock_mem}<br><br>Requires nvidia-smi |
|pacman |Displays update information per repository for pacman.<br><br>Parameters:<br>    * pacman.sum: If you prefere displaying updates with a single digit (defaults to 'False')<br><br>Requires the following executables:<br>    * fakeroot<br>    * pacman |
|pihole |Displays the pi-hole status (up/down) together with the number of ads that were blocked today<br>Parameters:<br>    * pihole.address     : pi-hole address (e.q: http://192.168.1.3)<br>    * pihole.pwhash      : pi-hole webinterface password hash (can be obtained from the /etc/pihole/SetupVars.conf file) |
|ping |Periodically checks the RTT of a configurable host using ICMP echos<br><br>Requires the following executable:<br>    * ping<br><br>Parameters:<br>    * ping.address : IP address to check<br>    * ping.timeout : Timeout for waiting for a reply (defaults to 5.0)<br>    * ping.probes  : Number of probes to send (defaults to 5)<br>    * ping.warning : Threshold for warning state, in seconds (defaults to 1.0)<br>    * ping.critical: Threshold for critical state, in seconds (defaults to 2.0) |
|pomodoro |Display and run a Pomodoro timer.<br>Left click to start timer, left click again to pause.<br>Right click will cancel the timer.<br><br>Parameters:<br>    * pomodoro.work: The work duration of timer in minutes (defaults to 25)<br>    * pomodoro.break: The break duration of timer in minutes (defaults to 5)<br>    * pomodoro.format: Timer display format with '%m' and '%s' for minutes and seconds (defaults to '%m:%s')<br>                       Examples: '%m min %s sec', '%mm', '', 'timer'<br>    * pomodoro.notify: Notification command to run when timer ends/starts (defaults to nothing)<br>                       Example: 'notify-send 'Time up!''. If you want to chain multiple commands,<br>                       please use an external wrapper script and invoke that. The module itself does<br>                       not support command chaining (see https://github.com/tobi-wan-kenobi/bumblebee-status/issues/532<br>                       for a detailled explanation) |
|prime |Displays and changes the current selected prime video card<br><br>Left click will call 'sudo prime-select nvidia'<br>Right click will call 'sudo prime-select nvidia'<br><br>Running these commands without a password requires editing your sudoers file<br>(always use visudo, it's very easy to make a mistake and get locked out of your computer!)<br><br>sudo visudo -f /etc/sudoers.d/prime<br><br>Then put a line like this in there:<br><br>    user    ALL=(ALL) NOPASSWD: /usr/bin/prime-select<br><br>If you can't figure out the sudoers thing, then don't worry, it's still really useful.<br><br>Parameters:<br>    * prime.nvidiastring: String to use when nvidia is selected (defaults to 'intel')<br>    * prime.intelstring: String to use when intel is selected (defaults to 'intel')<br><br>Requires the following executable:<br>    * prime-select |
|progress |Show progress for cp, mv, dd, ...<br><br>Parameters:<br>   * progress.placeholder: Text to display while no process is running (defaults to 'n/a')<br>   * progress.barwidth: Width of the progressbar if it is used (defaults to 8)<br>   * progress.format: Format string (defaults to '{bar} {cmd} {arg}')<br>                      Available values are: {bar} {pid} {cmd} {arg} {percentage} {quantity} {speed} {time}<br>   * progress.barfilledchar: Character used to draw the filled part of the bar (defaults to '#'), notice that it can be a string<br>   * progress.baremptychar: Character used to draw the empty part of the bar (defaults to '-'), notice that it can be a string<br><br>Requires the following executable:<br>   * progress |
|publicip |Displays public IP address |
|redshift |Displays the current color temperature of redshift<br><br>Requires the following executable:<br>    * redshift<br><br>Parameters:<br>    * redshift.location : location provider, either of 'auto' (default), 'geoclue2',<br>        'ipinfo' or 'manual'<br>        'auto' uses whatever redshift is configured to do<br>    * redshift.lat : latitude if location is set to 'manual'<br>    * redshift.lon : longitude if location is set to 'manual' |
|rotation |Shows a widget for each connected screen and allows the user to loop through different orientations.<br><br>Requires the following executable:<br>    * xrandr |
|rss |RSS news ticker<br><br>Fetches rss news items and shows these as a news ticker.<br>Left-clicking will open the full story in a browser.<br>New stories are highlighted.<br><br>Parameters:<br>    * rss.feeds : Space-separated list of RSS URLs<br>    * rss.length : Maximum length of the module, default is 60 |
|sensors |Displays sensor temperature<br><br>Parameters:<br>    * sensors.path: path to temperature file (default /sys/class/thermal/thermal_zone0/temp).<br>    * sensors.json: if set to 'true', interpret sensors.path as JSON 'path' in the output<br>                    of 'sensors -j' (i.e. \<key1\>/\<key2\>/.../\<value\>), for example, path could<br>                    be: 'coretemp-isa-00000/Core 0/temp1_input' (defaults to 'false')<br>    * sensors.match: (fallback) Line to match against output of 'sensors -u' (default: temp1_input)<br>    * sensors.match_pattern: (fallback) Line to match against before temperature is read (no default)<br>    * sensors.match_number: (fallback) which of the matches you want (default -1: last match).<br>    * sensors.show_freq: whether to show CPU frequency. (default: true) |
|sensors2 |Displays sensor temperature and CPU frequency<br><br>Parameters:<br><br>    * sensors2.chip: 'sensors -u' compatible filter for chip to display (default to empty - show all chips)<br>    * sensors2.showcpu: Enable or disable CPU frequency display (default: true)<br>    * sensors2.showtemp: Enable or disable temperature display (default: true)<br>    * sensors2.showfan: Enable or disable fan display (default: true)<br>    * sensors2.showother: Enable or display 'other' sensor readings (default: false)<br>    * sensors2.showname: Enable or disable show of sensor name (default: false)<br>    * sensors2.chip_include: Comma-separated list of chip to include (defaults to '' will include all by default, example: 'coretemp,bat')<br>    * sensors2.chip_exclude:Comma separated list of chip to exclude (defaults to '' will exlude none by default)<br>    * sensors2.field_include: Comma separated list of chip to include (defaults to '' will include all by default, example: 'temp,fan')<br>    * sensors2.field_exclude: Comma separated list of chip to exclude (defaults to '' will exclude none by default)<br>    * sensors2.chip_field_exclude: Comma separated list of chip field to exclude (defaults to '' will exclude none by default, example: 'coretemp-isa-0000.temp1,coretemp-isa-0000.fan1')<br>    * sensors2.chip_field_include: Comma-separated list of adaper field to include (defaults to '' will include all by default) |
|shell |Execute command in shell and print result<br><br>Few command examples:<br>    'ping -c 1 1.1.1.1 | grep -Po '(?\<=time=)\d+(\.\d+)? ms''<br>    'echo 'BTC=$(curl -s rate.sx/1BTC | grep -Po '^\d+')USD''<br>    'curl -s https://wttr.in/London?format=%l+%t+%h+%w'<br>    'pip3 freeze | wc -l'<br>    'any_custom_script.sh | grep arguments'<br><br>Parameters:<br>    * shell.command:  Command to execute<br>                      Use single parentheses if evaluating anything inside (sh-style)<br>                      For example shell.command='echo $(date +'%H:%M:%S')'<br>                      But NOT shell.command='echo $(date +'%H:%M:%S')'<br>                      Second one will be evaluated only once at startup<br>    * shell.interval: Update interval in seconds<br>                      (defaults to 1s == every bumblebee-status update)<br>    * shell.async:    Run update in async mode. Won't run next thread if<br>                      previous one didn't finished yet. Useful for long<br>                      running scripts to avoid bumblebee-status freezes<br>                      (defaults to False) |
|shortcut |Shows a widget per user-defined shortcut and allows to define the behaviour<br>when clicking on it.<br><br>For more than one shortcut, the commands and labels are strings separated by<br>a demiliter (; semicolon by default).<br><br>For example in order to create two shortcuts labeled A and B with commands<br>cmdA and cmdB you could do:<br><br> ./bumblebee-status -m shortcut -p shortcut.cmd='ls;ps' shortcut.label='A;B'<br><br>Parameters:<br>    * shortcut.cmds  : List of commands to execute<br>    * shortcut.labels: List of widgets' labels (text)<br>    * shortcut.delim : Commands and labels delimiter (; semicolon by default) |
|smartstatus |Displays HDD smart status of different drives or all drives<br><br>Parameters:<br>    * smartstatus.display: how to display (defaults to 'combined', other choices: 'seperate' or 'singles')<br>    * smartstauts.drives: in the case of singles which drives to display, separated comma list value, multiple accepted (defaults to 'sda', example:'sda,sdc') |
|spaceapi |Displays the state of a Space API endpoint<br>Space API is an API for hackspaces based on JSON. See spaceapi.io for<br>an example.<br><br>Requires the following libraries:<br>    * requests<br>    * regex<br><br>Parameters:<br>    * spaceapi.url: String representation of the api endpoint<br>    * spaceapi.format: Format string for the output<br><br>Format Strings:<br>    * Format strings are indicated by double %%<br>    * They represent a leaf in the JSON tree, layers seperated by '.'<br>    * Boolean values can be overwritten by appending '%true%false'<br>      in the format string<br>    * Example: to reference 'open' in '{'state':{'open': true}}'<br>               you would write '%%state.open%%', if you also want<br>               to say 'Open/Closed' depending on the boolean you<br>               would write '%%state.open%Open%Closed%%' |
|spacer |Draws a widget with configurable text content.<br><br>Parameters:<br>    * spacer.text: Widget contents (defaults to empty string) |
|spotify |Displays the current song being played<br>Requires the following library:<br>    * python-dbus<br>Parameters:<br>    * spotify.format:   Format string (defaults to '{artist} - {title}')<br>                        Available values are: {album}, {title}, {artist}, {trackNumber}, {playbackStatus}<br>    * spotify.previous: Change binding for previous song (default is left click)<br>    * spotify.next:     Change binding for next song (default is right click)<br>    * spotify.pause:    Change binding for toggling pause (default is middle click)<br>    Available options for spotify.previous, spotify.next and spotify.pause are:<br>        LEFT_CLICK, RIGHT_CLICK, MIDDLE_CLICK, SCROLL_UP, SCROLL_DOWN |
|stock |Display a stock quote from worldtradingdata.com<br><br>Requires the following python packages:<br>    * requests<br><br>Parameters:<br>    * stock.symbols : Comma-separated list of symbols to fetch<br>    * stock.change : Should we fetch change in stock value (defaults to True) |
|sun |Displays sunrise and sunset times<br><br>Requires the following python packages:<br>    * requests<br>    * suntime<br><br>Parameters:<br>    * cpu.lat : Latitude of your location<br>    * cpu.lon : Longitude of your location |
|system |system module<br><br>adds the possibility to<br>        * shutdown<br>        * reboot<br>the system.<br>        <br>Per default a confirmation dialog is shown before the actual action is performed.<br>        <br>Parameters:<br>        * system.confirm: show confirmation dialog before performing any action (default: true) <br>        * system.reboot: specify a reboot command (defaults to 'reboot')<br>        * system.shutdown: specify a shutdown command (defaults to 'shutdown -h now')<br>        * system.logout: specify a logout command (defaults to 'i3exit logout')<br>        * system.switch_user: specify a command for switching the user (defaults to 'i3exit switch_user')<br>        * system.lock: specify a command for locking the screen (defaults to 'i3exit lock')<br>        * system.suspend: specify a command for suspending (defaults to 'i3exit suspend')<br>        * system.hibernate: specify a command for hibernating (defaults to 'i3exit hibernate') |
|taskwarrior |Displays the number of pending tasks in TaskWarrior.<br><br>Requires the following library:<br>    * taskw<br><br>Parameters:<br>    * taskwarrior.taskrc : path to the taskrc file (defaults to ~/.taskrc) |
|test |Test module |
|time |Displays the current date and time.<br><br>Parameters:<br>    * time.format: strftime()-compatible formatting string<br>    * time.locale: locale to use rather than the system default |
|timetz |Displays the current date and time.<br><br>Parameters:<br>    * time.format: strftime()-compatible formatting string<br>    * time.locale: locale to use rather than the system default |
|title |Displays focused i3 window title.<br><br>Requirements:<br>    * i3ipc<br><br>Parameters:<br>    * title.max : Maximum character length for title before truncating. Defaults to 64.<br>    * title.placeholder : Placeholder text to be placed if title was truncated. Defaults to '...'.<br>    * title.scroll : Boolean flag for scrolling title. Defaults to False |
|todo |Displays the number of todo items from a text file<br><br>Parameters:<br>    * todo.file: File to read TODOs from (defaults to ~/Documents/todo.txt) |
|traffic |Displays network IO for interfaces.<br><br>Parameters:<br>    * traffic.exclude: Comma-separated list of interface prefixes to exclude (defaults to 'lo,virbr,docker,vboxnet,veth')<br>    * traffic.states: Comma-separated list of states to show (prefix with '^' to invert - i.e. ^down -\> show all devices that are not in state down)<br>    * traffic.showname: If set to False, hide network interface name (defaults to True)<br>    * traffic.format: Format string for download/upload speeds.<br>                      Defaults to '{:.2f}'<br>    * traffic.graphlen: Graph lenth in seconds. Positive even integer. Each<br>                        char shows 2 seconds. If set, enables up/down traffic<br>                        graphs |
|twmn |Toggle twmn notifications. |
|uptime |Displays the system uptime. |
|vault |Copy passwords from a password store into the clipboard (currently supports only 'pass')<br><br>Many thanks to [@bbernhard](https://github.com/bbernhard) for the idea!<br><br>Parameters:<br>    * vault.duration: Duration until password is cleared from clipboard (defaults to 30)<br>    * vault.location: Location of the password store (defaults to ~/.password-store)<br>    * vault.offx: x-axis offset of popup menu (defaults to 0)<br>    * vault.offy: y-axis offset of popup menu (defaults to 0) |
|vpn |Displays the VPN profile that is currently in use.<br><br>Left click opens a popup menu that lists all available VPN profiles and allows to establish<br>a VPN connection using that profile.<br><br>Prerequisites:<br>     * tk python library (usually python-tk or python3-tk, depending on your distribution)<br>     * nmcli needs to be installed and configured properly.<br>       To quickly test, whether nmcli is working correctly, type 'nmcli -g NAME,TYPE,DEVICE con' which<br>       lists all the connection profiles that are configured. Make sure that your VPN profile is in that list!<br><br>       e.g: to import a openvpn profile via nmcli:<br>           sudo nmcli connection import type openvpn file \</path/to/your/openvpn/profile.ovpn\> |
|watson |Displays the status of watson (time-tracking tool)<br><br>Requires the following executable:<br>    * watson |
|weather |Displays the temperature on the current location based on the ip<br><br>Requires the following python packages:<br>    * requests<br><br>Parameters:<br>    * weather.location: Set location, defaults to 'auto' for getting location automatically from a web service<br>                        If set to a comma-separated list, left-click and right-click can be used to rotate the locations.<br>                        Locations should be city names or city ids.<br>    * weather.unit: metric (default), kelvin, imperial<br>    * weather.showcity: If set to true, show location information, otherwise hide it (defaults to true)<br>    * weather.showminmax: If set to true, show the minimum and maximum temperature, otherwise hide it (defaults to false)<br>    * weather.apikey: API key from http://api.openweathermap.org |
|xkcd |Opens a random xkcd comic in the browser. |
|xrandr |Shows a widget for each connected screen and allows the user to enable/disable screens.<br><br>Parameters:<br>    * xrandr.overwrite_i3config: If set to 'true', this module assembles a new i3 config<br>        every time a screen is enabled or disabled by taking the file '~/.config/i3/config.template'<br>        and appending a file '~/.config/i3/config.\<screen name\>' for every screen.<br>    * xrandr.autoupdate: If set to 'false', does *not* invoke xrandr automatically. Instead, the<br>        module will only refresh when displays are enabled or disabled (defaults to true)<br><br>Requires the following python module:<br>    * (optional) i3 - if present, the need for updating the widget list is auto-detected<br><br>Requires the following executable:<br>    * xrandr |
|yubikey |Shows yubikey information<br><br>Requires: https://github.com/Yubico/python-yubico<br><br>The output indicates that a YubiKey is not connected or it displays<br>the corresponding serial number. |
|zpool |Displays info about zpools present on the system<br><br>Parameters:<br>   * zpool.list: Comma-separated list of zpools to display info for. If empty, info for all zpools<br>                 is displayed. (Default: '')<br>   * zpool.format: Format string, tags {name}, {used}, {left}, {size}, {percentfree}, {percentuse},<br>                   {status}, {shortstatus}, {fragpercent}, {deduppercent} are supported.<br>                   (Default: '{name} {used}/{size} ({percentfree}%)')<br>   * zpool.showio: Show also widgets detailing current read and write I/O (Default: true)<br>   * zpool.ioformat: Format string for I/O widget, tags {ops} (operations per seconds) and {band}<br>                     (bandwidth) are supported. (Default: '{band}')<br>   * zpool.warnfree: Warn if free space is below this percentage (Default: 10)<br>   * zpool.sudo: Use sudo when calling the `zpool` binary. (Default: false)<br><br>Option `zpool.sudo` is intended for Linux users using zfsonlinux older than 0.7.0: In pre-0.7.0<br>releases of zfsonlinux regular users couldn't invoke even informative commands such as<br>`zpool list`. If this option is true, command `zpool list` is invoked with sudo. If this option<br>is used, the following (or ekvivalent) must be added to the `sudoers(5)`:<br><br>```<br>\<username/ALL\> ALL = (root) NOPASSWD: /usr/bin/zpool list<br>```<br><br>Be aware of security implications of doing this! |