2016-05-25 20:14:56 -04:00
###### Did the bar stop working after your last update? [Read this](https://github.com/jaagr/lemonbuddy/wiki/pre-1.0:-Patching-your-configuration-file) to find out how to patch your config!
---
2016-05-19 10:41:06 -04:00
Lemonbuddy
==========
2016-06-11 06:37:14 -04:00
[![Build Status ](https://travis-ci.org/jaagr/lemonbuddy.svg?branch=master )](https://travis-ci.org/jaagr/lemonbuddy)
2016-06-13 21:15:33 -04:00
[![MIT License ](https://img.shields.io/github/license/mashape/apistatus.svg?maxAge=2592000?style=plastic )](https://github.com/jaagr/lemonbuddy/blob/master/LICENSE)
2016-06-11 06:37:14 -04:00
2016-05-19 17:46:50 -04:00
A fast and easy-to-use tool for [Lemonbar ](https://github.com/LemonBoy/bar/ ).
2016-05-19 10:41:06 -04:00
2016-05-20 05:20:58 -04:00
**Lemonbuddy** aims to help users build beautiful and highly customizable status bars
2016-05-19 17:46:50 -04:00
without messing with named pipes, MacGyver-like scripting or non-blocking
loops lobotomizing your CPU.
2016-05-19 10:41:06 -04:00
2016-06-09 10:13:01 -04:00
Please note that the project is still in early development, so please
report any anomalies by [creating an issue ticket ](https://github.com/jaagr/lemonbuddy/issues )
here on GitHub. I welcome pull requests with fixes or improvements.
2016-05-19 17:46:50 -04:00
2016-06-11 00:49:43 -04:00
Here are two screenshots showing you what it could look like (make sure to view them in full scale):
2016-05-25 11:41:13 -04:00
2016-06-11 00:49:43 -04:00
[![bspwm workspace ](http://i.imgur.com/xvlw9iHm.png )](http://i.imgur.com/xvlw9iH.png)
[![dracula workspace ](http://i.imgur.com/cYQOuRrm.png )](http://i.imgur.com/cYQOuRr.png)
2016-05-25 11:41:13 -04:00
2016-05-19 17:46:50 -04:00
## Installation
2016-06-20 11:28:21 -04:00
### Arch Linux
2016-05-30 22:52:08 -04:00
Install the AUR package [lemonbuddy-git ](https://aur.archlinux.org/packages/lemonbuddy-git/ ) to get the latest version, or
[lemonbuddy ](https://aur.archlinux.org/packages/lemonbuddy/ ) for the latest stable release.
2016-05-20 05:20:58 -04:00
2016-06-20 11:28:21 -04:00
### Void Linux
Install the XBPS package [lemonbuddy ](https://raw.githubusercontent.com/jaagr/void-packages/lemonbuddy/srcpkgs/lemonbuddy/template ) for the latest stable release.
2016-05-19 17:46:50 -04:00
### Dependencies:
2016-05-19 22:35:09 -04:00
A C++ compiler with C++14 support. For example `clang` .
2016-06-17 13:27:40 -04:00
- lemonbar (patched with xft support)
2016-05-23 20:55:25 -04:00
- cmake
2016-05-23 14:27:10 -04:00
- boost
2016-05-19 17:46:50 -04:00
- libx11
- libxrandr
2016-05-23 22:06:29 -04:00
- wireless_tools _(optional: used by the network module)_
- alsa-lib _(optional: used by the volume module)_
- libmpdclient _(optional: used by the mpd module)_
- libsigc++ _(optional: used by the i3 module)_
2016-05-19 17:46:50 -04:00
2016-05-30 21:07:19 -04:00
> **NOTE:** The application has only been tested against the `single-mon` fork.
> If you have trouble running it with your current version, install the one
> included in `contrib/lemonbar-sm-git`.
> Plans are to make `lemonbar` an internal module.
2016-05-24 17:30:05 -04:00
**Install dependencies using pacman:**
2016-05-19 17:46:50 -04:00
~~~ sh
2016-05-30 18:05:25 -04:00
$ sudo pacman -S cmake boost libx11 libxrandr wireless_tools alsa-lib libmpdclient libsigc++
2016-05-25 09:38:31 -04:00
$ yaourt ttf-font-awesome
2016-05-19 17:46:50 -04:00
~~~
2016-05-24 17:30:05 -04:00
**Install dependencies using xbps-install:**
2016-05-19 17:46:50 -04:00
~~~ sh
2016-05-25 09:38:31 -04:00
$ sudo xbps-install cmake alsa-lib-devel boost-devel i3-devel libX11-devel libXrandr-devel libmpdclient-devel libsigc++-devel wireless_tools-devel
$ sudo xbps-install font-awesome
~~~
2016-05-19 17:46:50 -04:00
2016-05-24 17:30:05 -04:00
**Install dependencies using apt-get:**
2016-05-23 22:06:29 -04:00
2016-05-24 17:30:05 -04:00
> **NOTE:** To get support for the mpd and i3 modules, the `universe` repository
> needs to be added to the list of sources in `/etc/apt/sources.list`.
2016-05-23 22:06:29 -04:00
>
2016-05-30 18:05:25 -04:00
> Packages in the `universe` repository: `libmpdclient-dev` `fonts-font-awesome`
2016-05-23 22:06:29 -04:00
~~~ sh
2016-05-30 18:05:25 -04:00
$ sudo apt-get install cmake libxrandr-dev libboost-dev libiw-dev libasound2-dev libmpdclient-dev libsigc++-2.0-dev
2016-05-25 09:38:31 -04:00
$ sudo apt-get install fonts-font-awesome
~~~
2016-05-23 22:06:29 -04:00
2016-05-24 17:30:05 -04:00
### Building from source
2016-05-19 17:46:50 -04:00
2016-05-24 17:30:05 -04:00
> **NOTE:** In Void Linux you will need to install `git-perl` to get support for submodules.
2016-05-19 17:46:50 -04:00
~~~ sh
2016-06-20 11:06:49 -04:00
$ git clone --branch 1.2.1 --recursive https://github.com/jaagr/lemonbuddy.git
2016-05-19 17:46:50 -04:00
$ mkdir lemonbuddy/build
$ cd lemonbuddy/build
2016-05-19 22:35:09 -04:00
$ cmake ..
2016-05-24 17:30:05 -04:00
# Optionally list and edit build settings before compiling
# $ make edit_cache
2016-05-19 17:46:50 -04:00
$ sudo make install
~~~
2016-05-23 22:21:02 -04:00
2016-05-19 17:46:50 -04:00
2016-05-24 17:30:05 -04:00
## Running
2016-05-19 17:46:50 -04:00
2016-05-24 17:30:05 -04:00
Before customizing the bar, make sure everything works as expected by trying
out one of the example configurations installed with the application.
The following code will get you started:
2016-05-19 17:46:50 -04:00
2016-05-24 17:30:05 -04:00
~~~ sh
# Create the config root directory
$ mkdir -p ${XDG_CONFIG_HOME:-$HOME/.config}/lemonbuddy
$ cd ${XDG_CONFIG_HOME:-$HOME/.config}/lemonbuddy
# Copy sample config for the running wm (uses a wm agnostic config as fallback)
2016-05-25 09:38:31 -04:00
$ __wm=$(pgrep -l -x "(bspwm|i3)"); __prefix=$(which lemonbuddy)
2016-05-24 17:52:36 -04:00
$ cp "${__prefix%%/bin*}/share/examples/lemonbuddy/config${__wm:+.${__wm##* }}" config
2016-05-24 17:30:05 -04:00
# Launch the bar
# (where "example" is the name of the bar as defined by [bar/NAME] in the config)
2016-05-25 20:14:56 -04:00
$ lemonbuddy_wrapper example
2016-05-24 17:30:05 -04:00
~~~
2016-05-25 09:38:31 -04:00
> **NOTE:** If you are running i3 or bspwm and you don't see the workspace icons
> it probably depends on the font. Install `font-awesome` and relaunch the bar.
> ...or replace the icons in the config.
2016-05-25 20:14:56 -04:00
**It is recommended** to always use `lemonbuddy_wrapper` when launching the bars.
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
`lemonbuddy_wrapper` is just a simple shell script that takes care
2016-05-25 09:38:31 -04:00
of redirecting the in-/output streams between `lemonbuddy` and `lemonbar` .
2016-05-24 17:30:05 -04:00
If you handle the in-/output stream redirection's manually, the internal command
handlers (e.g. mpd or volume controls) might stop working. It won't change the
output of the bar but you will miss out on the internal API calls, which is one
of the main advantages of using the application.
2016-05-25 20:14:56 -04:00
The `lemonbuddy_wrapper` will be deprecated once `lemonbar` is integrated
2016-05-24 17:30:05 -04:00
into the project.
## Launching the bar in your wm's bootstrap routine
When using the wrapper to start the bar in in your wm's autostart routine, make sure to include
a kill directive before launching the bar. This is done to make sure that any previously spawned
2016-06-20 11:05:23 -04:00
processes gets terminated before before we launch the new ones.
Create an executable file containing the startup logic, for example `$HOME/.config/lemonbuddy/launch.sh` :
2016-05-24 17:30:05 -04:00
~~~ sh
2016-06-20 11:05:23 -04:00
#!/usr/bin/env sh
2016-05-24 17:30:05 -04:00
# Terminate already running bar instances
2016-05-25 20:14:56 -04:00
lemonbuddy_terminate noconfirm
2016-05-24 17:30:05 -04:00
# Launch bar1 and bar2
2016-05-25 20:14:56 -04:00
lemonbuddy_wrapper bar1 &
lemonbuddy_wrapper bar2 &
2016-05-24 17:30:05 -04:00
echo "Bars launched..."
~~~
2016-06-20 11:05:23 -04:00
If you are using **bspwm** , add the following line to `bspwmrc` :
~~~ sh
$HOME/.config/lemonbuddy/launch.sh
~~~
If you are using **i3** , add the following line to your configuration:
~~~ sh
exec_always $HOME/.config/lemonbuddy/launch.sh
~~~
Remember to make it executable using:
~~~ sh
$ chmod +x $HOME/.config/lemonbuddy/launch.sh
~~~
2016-05-24 17:30:05 -04:00
## Configuration
2016-05-25 20:14:56 -04:00
The configuration syntax is very much **WIP** . If you have any feedback or suggestions on how to improve it,
please [create an issue ticket ](https://github.com/jaagr/lemonbuddy/issues ), or a pull request.
2016-05-24 17:30:05 -04:00
When working with unicode symbols, remember that fonts render them differently. Changing font
can change the quality of your generated output drastically. One must-have font
is [Unifont ](http://unifoundry.com/unifont.html ), which has great unicode coverage.
Also try different icon fonts, such as [Font Awesome ](http://fontawesome.io/icons/ ) and [Material Icons ](https://design.google.com/icons/ ).
The values used in the examples below are to be considered placeholder values, and
the resulting output might not be award-winning.
2016-05-25 20:14:56 -04:00
### Syntax and DSL
The configuration syntax is based on the `ini` file format.
~~~ ini
[section/name]
str = My string
; Hint: Quote the value to keep the spaces
str = " My string"
bool = true
bool = on
int = 10
float = 10.0
; Values for a defined bar can be referenced using:
key = ${bar/top.foreground}
; Values for the current bar can be referenced using:
key = ${BAR.foreground}
; Other values can be referenced using:
key = ${section.key}
;format[-NAME] = "< TAGS... > "
;format[-NAME]-spacing = N (unit: whitespaces)
;format[-NAME]-padding = N (unit: whitespaces)
;format[-NAME]-margin = N (unit: whitespaces)
;format[-NAME]-offset = N (unit: pixels)
;format[-NAME]-foreground = #aarrggbb
;format[-NAME]-background = #aarrggbb
;format[-NAME]-underline = #aarrggbb
;format[-NAME]-overline = #aarrggbb
;
;label-NAME[-(foreground|background|(under|over)line|font|padding)] = ?
;icon-NAME[-(foreground|background|(under|over)line|font|padding)] = ?
;ramp-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] = ?
;animation-NAME-[0-9]+[-(foreground|background|(under|over)line|font|padding)] = ?
;
;bar-NAME-width = N (unit: characters)
;bar-NAME-format = (tokens: %fill% %indicator% %empty%)
;bar-NAME-foreground-[0-9]+ = #aarrggbb
;bar-NAME-indicator[-(foreground|background|(under|over)line|font|padding)] =
;bar-NAME-fill[-(foreground|background|(under|over)line|font|padding)] =
;bar-NAME-empty[-(foreground|background|(under|over)line|font|padding)] =
~~~
2016-05-24 17:30:05 -04:00
`🟊 = module is still flagged as work in progress`
2016-05-31 19:07:23 -04:00
### Application settings
~~~ ini
[settings]
; Limit the amount of events sent to lemonbar within a set timeframe:
; - "Allow < throttle_limit > updates within < throttle_ms > of time"
; Default values:
;throttle_limit = 5
;throttle_ms = 50
~~~
2016-06-09 08:22:21 -04:00
### Bar settings
~~~ ini
[bar/example]
; Use the following command to list available outputs:
; $ xrandr -q | grep " connected" | cut -d ' ' -f1
monitor = HDMI1
; Omit the % to specify the width in pixels
width = 100%
height = 30
2016-06-09 18:53:02 -04:00
; Offset value defined in pixels
;offset_x = 0
;offset_y = 0
2016-06-09 08:22:21 -04:00
; Put the bar at the bottom of the screen
bottom = true
; Weather to force docking mode or not
dock = false
; This value is used as a multiplier when adding spaces between elements
spacing = 3
; Height of under-/overline
lineheight = 14
; Colors
background = #222222
foreground = #eefafafa
linecolor = ${bar/example.background}
; Amount of spaces to add at the start/end of the whole bar
padding_left = 5
padding_right = 2
; Amount of spaces to add before/after each module
module_margin_left = 3
module_margin_right = 3
; Fonts are defined using: < FontName > ;< Offset >
2016-05-25 20:14:56 -04:00
font-0 = NotoSans-Regular:size=8;0
font-1 = MaterialIcons:size=10;0
font-2 = Termsynu:size=8;-1
font-3 = FontAwesome:size=10;0
2016-06-09 08:22:21 -04:00
; The separator will be inserted between the output of each module
;separator = |
; This value is used by Lemonbar and it specifies the clickable
; areas available -> %{A:action:}...%{A}
clickareas = 30
; Value to be used to set the WM_NAME atom
2016-05-25 20:14:56 -04:00
; This defaults to "lemonbuddy-[BAR]_[MONITOR]"
2016-06-09 08:22:21 -04:00
;wm_name = mybar
; Locale used to localize module output (for example date)
;locale = sv_SE.UTF-8
; Define what modules to output
2016-05-25 20:14:56 -04:00
modules-left = cpu ram
modules-center = label
modules-right = clock
2016-06-09 08:22:21 -04:00
~~~
2016-05-24 17:30:05 -04:00
### Module `internal/backlight`
~~~ ini
[module/backlight]
type = internal/backlight
; Use the following command to list available cards:
; $ ls -1 /sys/class/backlight/
card = intel_backlight
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
; < label > (default)
; < ramp >
; < bar >
format = < ramp > < bar >
; Available tokens:
; %percentage% (default)
label = %percentage%
2016-05-25 20:14:56 -04:00
ramp-0 = 🌕
ramp-1 = 🌔
ramp-2 = 🌓
ramp-3 = 🌒
ramp-4 = 🌑
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
bar-width = 10
bar-indicator = |
bar-fill = ─
bar-empty = ─
2016-05-24 17:30:05 -04:00
~~~
2016-05-26 05:46:18 -04:00
### Module `internal/battery`
2016-05-24 17:30:05 -04:00
~~~ ini
[module/battery]
type = internal/battery
; This is useful in case the battery never reports 100% charge
;full_at = 99
; Use the following command to list batteries and adapters:
; $ ls -1 /sys/class/power_supply/
;battery = BAT0
;adapter = ADP1
2016-05-30 20:52:18 -04:00
2016-05-30 21:02:08 -04:00
; Seconds between reading battery capacity.
; If set to 0, polling will be disabled.
2016-05-30 20:52:18 -04:00
;poll_interval = 3
2016-05-24 17:30:05 -04:00
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-charging > (default)
; < bar-capaity >
; < ramp-capacity >
; < animation-charging >
format-charging = < animation-charging > < label-charging >
2016-05-24 17:30:05 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-discharging > (default)
; < bar-capaity >
; < ramp-capacity >
format-discharging = < ramp-capacity > < label-discharging >
2016-05-24 17:30:05 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-full > (default)
; < bar-capaity >
; < ramp-capacity >
;format-full = < ramp-capacity > < label-full >
2016-05-24 17:30:05 -04:00
; Available tokens:
; %percentage% (default)
2016-05-25 20:14:56 -04:00
label-charging = Charging %percentage%
2016-05-24 17:30:05 -04:00
; Available tokens:
; %percentage% (default)
2016-05-25 20:14:56 -04:00
label-discharging = Discharging %percentage%
2016-05-24 17:30:05 -04:00
; Available tokens:
; %percentage% (default)
2016-05-25 20:14:56 -04:00
label-full = Fully charged
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
ramp-capacity-0 =
ramp-capacity-1 =
ramp-capacity-2 =
ramp-capacity-3 =
ramp-capacity-4 =
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
bar-capacity-width = 10
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
animation-charging-0 =
animation-charging-1 =
animation-charging-2 =
animation-charging-3 =
animation-charging-4 =
animation-charging-framerate_ms = 750
2016-05-24 17:30:05 -04:00
~~~
### Module `internal/bspwm`
~~~ ini
[module/bspwm]
type = internal/bspwm
~~~
##### Extra formatting (example)
~~~ ini
2016-05-25 20:14:56 -04:00
; workspace_icon-[0-9]+ = label;icon
workspace_icon-0 = code;♚
workspace_icon-1 = office;♛
workspace_icon-2 = graphics;♜
workspace_icon-3 = mail;♝
workspace_icon-4 = web;♞
workspace_icon-default = ♟
2016-05-24 17:30:05 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-state > (default) - gets replaced with < label- ( active | urgent | occupied | empty ) >
; < label-mode > - gets replaced with < label- ( monocle | tiled | fullscreen | floating | locked | sticky | private ) >
format = < label-state > < label-mode >
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
; If any values for label-dimmed-N area defined, the workspace/mode colors will get overridden
2016-05-24 17:30:05 -04:00
; with those values if the monitor is out of focus
2016-05-25 20:14:56 -04:00
label-dimmed-foreground = #555
label-dimmed-underline = ${BAR.background}
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-active = %icon%
label-active-foreground = #ffffff
label-active-background = #3f3f3f
label-active-underline = #fba922
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-occupied = %icon%
label-occupied-underline = #555555
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-urgent = %icon%
label-urgent-foreground = #000000
label-urgent-background = #bd2c40
label-urgent-underline = #9b0a20
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-empty = %icon%
label-empty-foreground = #55ffffff
2016-05-24 17:30:05 -04:00
; Available tokens:
; None
2016-05-25 20:14:56 -04:00
label-monocle =
;label-tiled =
;label-fullscreen =
;label-floating =
label-locked =
label-locked-foreground = #bd2c40
label-sticky =
label-sticky-foreground = #fba922
label-private =
label-private-foreground = #bd2c40
2016-05-24 17:30:05 -04:00
~~~
### Module `internal/cpu`
~~~ ini
[module/cpu]
type = internal/cpu
; Seconds to sleep between updates
;interval = 0.5
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
; < label > (default)
2016-05-25 20:14:56 -04:00
; < bar-load >
; < ramp-load >
; < ramp-load_per_core >
format = < label > < ramp-load_per_core >
2016-05-24 17:30:05 -04:00
; Available tokens:
; %percentage% (default) - total cpu load
label = CPU %percentage%
2016-05-25 20:14:56 -04:00
ramp-load_per_core-0 = ▁
ramp-load_per_core-1 = ▂
ramp-load_per_core-2 = ▃
ramp-load_per_core-3 = ▄
ramp-load_per_core-4 = ▅
ramp-load_per_core-5 = ▆
ramp-load_per_core-6 = ▇
ramp-load_per_core-7 = █
2016-05-24 17:30:05 -04:00
~~~
### Module `internal/date`
~~~ ini
[module/date]
type = internal/date
; Seconds to sleep between updates
;interval = 1.0
; see "man date" for details on how to format the date string
; NOTE: if you want to use lemonbar tags here you need to use %%{...}
date = %Y-%m-%d% %H:%M
; if date_detailed is defined, clicking the area will toggle between formats
2016-05-25 20:14:56 -04:00
date_detailed = %%{F#888}%A, %d %B %Y %%{F#fff}%H:%M%%{F#666}:%%{F#fba922}%S%%{F-}
2016-05-24 17:30:05 -04:00
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
; < date > (default)
format = 🕓 < date >
2016-05-25 20:14:56 -04:00
format-background = #55ff3399
format-foreground = #fff
2016-05-24 17:30:05 -04:00
~~~
### 🟊 Module `internal/i3`
Requires the project to be built with support for i3. For more information,
see [the dependency section ](#user-content-dependencies ).
The module is still marked as WIP since it needs more testing. If you notice any
anomalies, please [create an issue ](https://github.com/jaagr/lemonbuddy/issues ).
2016-05-25 20:14:56 -04:00
See [the bspwm module ](#user-content-dependencies ) for details on `label-dimmed` .
2016-05-24 17:30:05 -04:00
~~~ ini
[module/i3]
type = internal/i3
~~~
##### Extra formatting (example)
~~~ ini
2016-05-25 20:14:56 -04:00
; workspace_icon-[0-9]+ = label;icon
workspace_icon-0 = 1;♚
workspace_icon-1 = 2;♛
workspace_icon-2 = 3;♜
workspace_icon-3 = 4;♝
workspace_icon-4 = 5;♞
workspace_icon-default = ♟
2016-05-24 17:30:05 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-state > (default) - gets replaced with < label- ( focused | unfocused | visible | urgent ) >
;format = < label-state >
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-focused = %icon%
label-focused-foreground = #ffffff
label-focused-background = #3f3f3f
label-focused-underline = #fba922
label-focused-padding = 4
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-unfocused = %icon%
label-unfocused-padding = 4
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-visible = %icon%
label-visible-underline = #555555
label-visible-padding = 4
2016-05-24 17:30:05 -04:00
; Available tokens:
; %name%
; %icon%
; %index%
; Default: %icon% %name%
2016-05-25 20:14:56 -04:00
label-urgent = %icon%
label-urgent-foreground = #000000
label-urgent-background = #bd2c40
label-urgent-padding = 4
2016-05-24 17:30:05 -04:00
~~~
### Module `internal/memory`
~~~ ini
[module/memory]
type = internal/memory
; Seconds to sleep between updates
;interval = 1.0
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
; < label > (default)
2016-05-25 20:14:56 -04:00
; < bar-used >
; < bar-free >
format = < label > < bar-used >
2016-05-24 17:30:05 -04:00
; Available tokens:
; %percentage_used% (default)
; %percentage_free%
; %gb_used%
; %gb_free%
; %gb_total%
; %mb_used%
; %mb_free%
; %mb_total%
label = RAM %percentage_used%
2016-05-25 20:14:56 -04:00
bar-used-width = 50
bar-used-foreground-0 = #55aa55
bar-used-foreground-1 = #557755
bar-used-foreground-2 = #f5a70a
bar-used-foreground-3 = #ff5555
bar-used-fill = ▐
bar-used-empty = ▐
bar-used-empty-foreground = #444444
2016-05-24 17:30:05 -04:00
~~~
### Module `internal/mpd`
~~~ ini
[module/mpd]
type = internal/mpd
2016-06-09 07:42:03 -04:00
;host = 127.0.0.1
;port = 6600
;password = mypassword
2016-05-24 17:30:05 -04:00
; Seconds to sleep between progressbar/song timer sync
;interval = 0.5
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-song > (default)
; < label-time >
; < bar-progress >
; < toggle > - gets replaced with < icon- ( pause | play ) >
; < icon-random >
; < icon-repeat >
; < icon-repeatone >
; < icon-prev >
; < icon-stop >
; < icon-play >
; < icon-pause >
; < icon-next >
2016-06-20 23:10:18 -04:00
; < icon-seekb >
; < icon-seekf >
format-online = < icon-prev > < icon-seekb > < icon-stop > < toggle > < icon-seekf > < icon-next > < icon-repeat > < icon-random > < bar-progress > < label-time > < label-song >
2016-05-24 17:30:05 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-offline >
;format-offline = < label-offline >
2016-05-24 17:30:05 -04:00
; Available tokens:
; %artist%
; %album%
; %title%
; Default: %artist% - %title%
2016-05-25 20:14:56 -04:00
;label-song = 𝄞 %artist% - %title%
2016-05-24 17:30:05 -04:00
; Available tokens:
; %elapsed%
; %total%
; Default: %elapsed% / %total%
2016-05-25 20:14:56 -04:00
;label-time = %elapsed% / %total%
2016-05-24 17:30:05 -04:00
; Available tokens:
; None
2016-05-25 20:14:56 -04:00
label-offline = 🎜 mpd is offline
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
icon-play = ⏵
icon-pause = ⏸
icon-stop = ⏹
icon-prev = ⏮
icon-next = ⏭
2016-06-20 23:10:18 -04:00
icon-seekb = ⏪
icon-seekf = ⏩
2016-05-25 20:14:56 -04:00
icon-random = 🔀
icon-repeat = 🔁
;icon-repeatone = 🔂
2016-05-24 17:30:05 -04:00
; Used to display the state of random/repeat/repeatone
2016-05-25 20:14:56 -04:00
toggle_on-foreground = #ff
toggle_off-foreground = #55
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
bar-progress-width = 45
bar-progress-indicator = |
bar-progress-fill = ─
bar-progress-empty = ─
2016-05-24 17:30:05 -04:00
~~~
2016-05-31 05:49:33 -04:00
### Module `internal/network`
2016-05-24 17:30:05 -04:00
**NOTE:** If you use both a wired and a wireless network, just add 2 module definitions.
For example:
> ~~~ ini
> [module/wired-network]
> type = internal/network
> interface = eth1
2016-05-19 17:46:50 -04:00
>
2016-05-24 17:30:05 -04:00
> [module/wireless-network]
> type = internal/network
> interface = wlan1
> ~~~
~~~ ini
[module/network]
type = internal/network
interface = wlan1
; Seconds to sleep between updates
2016-05-31 05:49:33 -04:00
interval = 3.0
2016-05-24 17:30:05 -04:00
2016-05-31 05:49:33 -04:00
; Test connectivity every Nth update
; A value of 0 disables the feature
; Recommended minimum value: round(10 / interval)
; - which would test the connection approx. every 10th sec.
2016-05-24 17:30:05 -04:00
; Default: 0
2016-05-31 05:49:33 -04:00
;ping_interval = 3
2016-05-24 17:30:05 -04:00
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-connected > (default)
; < ramp-signal >
format-connected = < ramp-signal > < label-connected >
2016-05-24 17:30:05 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-disconnected > (default)
;format-disconnected = < label-disconnected >
2016-05-24 17:30:05 -04:00
2016-05-31 05:49:33 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-connected > (default)
; < label-packetloss >
; < animation-packetloss >
format-packetloss = < animation-packetloss > < label-connected >
2016-05-31 05:49:33 -04:00
2016-05-24 17:30:05 -04:00
; Available tokens:
; %ifname% [wireless+wired]
; %local_ip% [wireless+wired]
; %essid% [wireless]
; %signal% [wireless]
; %linkspeed% [wired]
; Default: %ifname% %local_ip%
2016-05-25 20:14:56 -04:00
label-connected = %essid%
label-connected-foreground = #eefafafa
2016-05-24 17:30:05 -04:00
; Available tokens:
; %ifname% [wireless+wired]
; Default: (none)
2016-05-25 20:14:56 -04:00
;label-disconnected = not connected
;label-disconnected-foreground = #66ffffff
2016-05-24 17:30:05 -04:00
2016-05-31 05:49:33 -04:00
; Available tokens:
; %ifname% [wireless+wired]
; %local_ip% [wireless+wired]
; %essid% [wireless]
; %signal% [wireless]
; %linkspeed% [wired]
; Default: (none)
2016-05-25 20:14:56 -04:00
;label-packetloss = %essid%
;label-packetloss-foreground = #eefafafa
2016-05-31 05:49:33 -04:00
2016-05-25 20:14:56 -04:00
ramp-signal-0 = 😱
ramp-signal-1 = 😠
ramp-signal-2 = 😒
ramp-signal-3 = 😊
ramp-signal-4 = 😃
ramp-signal-5 = 😈
2016-05-31 05:49:33 -04:00
2016-05-25 20:14:56 -04:00
animation-packetloss-0 = ⚠
animation-packetloss-0-foreground = #ffa64c
animation-packetloss-1 = 📶
animation-packetloss-1-foreground = #000000
animation-packetloss-framerate_ms = 500
2016-05-24 17:30:05 -04:00
~~~
### 🟊 Module `internal/volume`
2016-06-02 13:29:59 -04:00
This module is still WIP.
2016-05-25 20:14:56 -04:00
TODO: Add custom format for when the headphones are plugged in.
2016-05-24 17:30:05 -04:00
~~~ ini
[module/volume]
2016-06-02 12:31:02 -04:00
type = internal/volume
2016-06-09 19:09:54 -04:00
;master_mixer = Master
2016-05-24 17:30:05 -04:00
; Use the following command to list available mixer controls:
; $ amixer scontrols | sed -nr "s/.*'([[:alnum:]]+)'.*/\1/p"
speaker_mixer = Speaker
headphone_mixer = Headphone
2016-06-09 19:09:54 -04:00
; NOTE: This is required if headphone_mixer is defined
2016-05-24 17:30:05 -04:00
; Use the following command to list available device controls
; $ amixer controls | sed -r "/CARD/\!d; s/.*=([0-9]+).*name='([^']+)'.*/printf '%3.0f: %s\n' '\1' '\2'/e" | sort
headphone_control_numid = 9
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-volume > (default)
; < ramp-volume >
; < bar-volume >
format-volume = < ramp-volume > < label-volume >
2016-05-24 17:30:05 -04:00
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-muted > (default)
; < ramp-volume >
; < bar-volume >
;format-muted = < label-muted >
2016-05-24 17:30:05 -04:00
; Available tokens:
; %percentage% (default)
2016-05-25 20:14:56 -04:00
;label-volume = %percentage%
2016-05-24 17:30:05 -04:00
; Available tokens:
; %percentage% (default)
2016-05-25 20:14:56 -04:00
label-muted = 🔇 muted
label-muted-foreground = #66
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
ramp-volume-0 = 🔈
ramp-volume-1 = 🔉
ramp-volume-2 = 🔊
2016-05-24 17:30:05 -04:00
~~~
### Module `custom/menu`
~~~ ini
[module/menu-apps]
type = custom/menu
2016-05-25 20:14:56 -04:00
; "menu-LEVEL-N" has the same properties as "label-NAME" with
2016-05-24 17:30:05 -04:00
; the additional "exec" property
;
; Available exec commands:
2016-05-25 20:14:56 -04:00
; menu_open-LEVEL
2016-05-24 17:30:05 -04:00
; menu_close
; Other commands will be executed using "/usr/bin/env sh -c $COMMAND"
2016-05-25 20:14:56 -04:00
menu-0-0 = Browsers
menu-0-0-exec = menu_open-1
menu-0-0-foreground = #fba922
menu-0-2 = Multimedia
menu-0-2-exec = menu_open-3
menu-0-2-foreground = #fba922
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
menu-1-0 = Firefox
menu-1-0-exec = firefox &
menu-1-0-foreground = #fba922
menu-1-1 = Chromium
menu-1-1-exec = chromium &
menu-1-1-foreground = #fba922
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
menu-2-0 = Gimp
menu-2-0-foreground = #fba922
menu-2-0-exec = gimp &
menu-2-1 = Scrot
menu-2-1-exec = scrot &
menu-2-1-foreground = #fba922
2016-05-24 17:30:05 -04:00
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
2016-05-25 20:14:56 -04:00
; < label-toggle > (default) - gets replaced with < label- ( open | close ) >
2016-05-24 17:30:05 -04:00
; < menu > (default)
2016-05-25 20:14:56 -04:00
;f-ormat = < label-toggle > < menu >
2016-05-24 17:30:05 -04:00
2016-05-25 20:14:56 -04:00
label-open = Apps
label-close = x
2016-05-24 17:30:05 -04:00
~~~
### Module `custom/script`
~~~ ini
[module/pkgupdates-available]
type = custom/script
; Available tokens:
; %counter%
; The "exec" command will be executed using "/usr/bin/env sh -c [command]"
exec = count=$(sudo pacman -Syup --noprogressbar 2>/dev/null | sed '/Starting full/,~1!d;/Starting full/d' | wc -l); [ $count -gt 0 ] & & echo "Updates available: $count"
;exec = count=$(echo n | sudo xbps-install -Su >/dev/null 2>&1; sudo xbps-install -Sun | wc -l); [ $count -gt 0 ] & & echo "Updates available: $count"
2016-06-13 17:41:59 -04:00
; Should we keep listening for output from the command?
;tail = false
2016-05-24 17:30:05 -04:00
; Seconds to sleep between updates
2016-06-13 17:41:59 -04:00
; Will be ignored if `tail = true`
; Default: 1
2016-05-24 17:30:05 -04:00
interval = 90
~~~
##### Extra formatting (example)
~~~ ini
; Available tags:
; < output > (default)
;format = < output >
2016-05-25 20:14:56 -04:00
format-background = #999
format-foreground = #000
format-padding = 4
2016-05-24 17:30:05 -04:00
; Available tokens:
; %counter%
;
2016-05-25 20:14:56 -04:00
; "click-(left|middle|right)" will be executed using "/usr/bin/env sh -c [command]"
click-left = echo left %counter%
click-middle = echo middle %counter%
click-right = echo right %counter%
2016-05-24 17:30:05 -04:00
; Available tokens:
; %counter%
;
2016-05-25 20:14:56 -04:00
; "scroll-(up|down)" will be executed using "/usr/bin/env sh -c [command]"
scroll-up = echo scroll up %counter%
scroll-down = echo scroll down %counter%
2016-05-24 17:30:05 -04:00
~~~
2016-06-01 09:12:27 -04:00
##### Useful example
Show title of the currently focused window.
~~~ ini
[module/xtitle]
type = custom/script
2016-06-13 17:41:59 -04:00
exec = xtitle -s
tail = true
2016-06-01 09:12:27 -04:00
~~~
2016-05-24 17:30:05 -04:00
### Module `custom/text`
~~~ ini
[module/my-text-label]
type = custom/text
content = Some random label
~~~
##### Extra formatting (example)
~~~ ini
2016-05-25 20:14:56 -04:00
; "content" has the same properties as "format-NAME"
content-background = #000
content-foreground = #fff
content-padding = 4
; "click-(left|middle|right)" will be executed using "/usr/bin/env sh -c $COMMAND"
click-left = echo left
click-middle = echo middle
click-right = echo right
; "scroll-(up|down)" will be executed using "/usr/bin/env sh -c $COMMAND"
scroll-up = echo scroll up
scroll-down = echo scroll down
2016-05-24 17:30:05 -04:00
~~~
## License
Lemonbuddy is licensed under the MIT license. [See LICENSE for more information ](https://github.com/jaagr/lemonbuddy/blob/master/LICENSE ).