A lightweight overlay volume/backlight/progress/anything bar for wlroots based Wayland compositors (requires support for wlr_layer_shell_unstable_v1
). This project is inspired by xob - X Overlay Bar.
Releases are signed with 5C6DA024DDE27178073EA103F4B432D5D67990E3 and published on GitHub.
Install dependencies:
- wayland
- inih
- pixman
- wayland-protocols *
- meson *
- scdoc (optional: man page) *
- libseccomp (optional: Linux kernel syscall filtering) *
- cmocka (optional: tests) *
* compile-time dependency
Run these commands:
git clone [email protected]:francma/wob.git
cd wob
meson build
ninja -C build
sudo ninja -C build install
Launch wob in a terminal, enter a value (positive integer), press return.
wob
You may manage a bar for audio volume, backlight intensity, or whatever, using a named pipe. Create a named pipe, e.g. /tmp/wobpipe
, on your filesystem using.
mkfifo /tmp/wobpipe
Connect the named pipe to the standard input of a wob instance.
tail -f /tmp/wobpipe | wob
Set up your environment so that after updating audio volume, backlight intensity, or whatever, to a new value like 43, it writes that value into the pipe:
echo 43 > /tmp/wobpipe
Adapt this use-case to your workflow (scripts, callbacks, or keybindings handled by the window manager).
See wob.ini.5 for styling and positioning options.
Add these lines to your Sway config file:
set $WOBSOCK $XDG_RUNTIME_DIR/wob.sock
exec rm -f $WOBSOCK && mkfifo $WOBSOCK && tail -f $WOBSOCK | wob
Volume using alsa:
bindsym XF86AudioRaiseVolume exec amixer sset Master 5%+ | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $WOBSOCK
bindsym XF86AudioLowerVolume exec amixer sset Master 5%- | sed -En 's/.*\[([0-9]+)%\].*/\1/p' | head -1 > $WOBSOCK
bindsym XF86AudioMute exec amixer sset Master toggle | sed -En '/\[on\]/ s/.*\[([0-9]+)%\].*/\1/ p; /\[off\]/ s/.*/0/p' | head -1 > $WOBSOCK
Volume using pulse audio:
bindsym XF86AudioRaiseVolume exec pamixer -ui 2 && pamixer --get-volume > $WOBSOCK
bindsym XF86AudioLowerVolume exec pamixer -ud 2 && pamixer --get-volume > $WOBSOCK
bindsym XF86AudioMute exec pamixer --toggle-mute && ( [ "$(pamixer --get-mute)" = "true" ] && echo 0 > $WOBSOCK ) || pamixer --get-volume > $WOBSOCK
Volume using pulse audio (alternative with pactl) :
bindsym XF86AudioRaiseVolume exec pactl set-sink-volume @DEFAULT_SINK@ +5% && pactl get-sink-volume @DEFAULT_SINK@ | head -n 1| awk '{print substr($5, 1, length($5)-1)}' > $WOBSOCK
bindsym XF86AudioLowerVolume exec pactl set-sink-volume @DEFAULT_SINK@ -5% && pactl get-sink-volume @DEFAULT_SINK@ | head -n 1 | awk '{print substr($5, 1, length($5)-1)}' > $WOBSOCK
Brightness using haikarainen/light:
bindsym XF86MonBrightnessUp exec light -A 5 && light -G | cut -d'.' -f1 > $WOBSOCK
bindsym XF86MonBrightnessDown exec light -U 5 && light -G | cut -d'.' -f1 > $WOBSOCK
Brightness using brightnessctl:
bindsym XF86MonBrightnessDown exec brightnessctl set 5%- | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
bindsym XF86MonBrightnessUp exec brightnessctl set +5% | sed -En 's/.*\(([0-9]+)%\).*/\1/p' > $WOBSOCK
Add this line to your config file:
exec systemctl --user import-environment DISPLAY WAYLAND_DISPLAY SWAYSOCK
Copy systemd unit files (if not provided by your distribution package):
cp contrib/systemd/wob.{service,socket} ~/.local/share/systemd/user/
systemctl daemon-reload --user
Enable systemd wob socket:
systemctl enable --now --user wob.socket
ISC, see LICENSE.