Krowbar
bspwm status bar
Install / Use
/learn @bloznelis/KrowbarREADME
</div> <p align=center> Status bar made for BSPWM, focused on ease of use, stability and speed. </p> <p align=center> <img alt="GitHub release (latest SemVer)" src="https://img.shields.io/github/v/release/bloznelis/krowbar"> <img alt="GitHub Workflow Status" src="https://img.shields.io/github/actions/workflow/status/bloznelis/krowbar/ci.yaml"> </p>"Oh, and before I forget, I think you dropped this back in Black Mesa!" [1]
Motivation
Generic status bars, while being complex, provide great customization, but I've always wanted a BSPWM bar that just works out-of-the-box.
Features
- Listens to BSPWM events directly via Unix socket, i.e. instant updates
- Focused desktop window count widget, no more getting lost in monocle mode
- Urgent desktop support
- All widgets are written in Rust – forget slow scripts
- First class multi-monitor support
- In-built desktop, node count, active node name, network, cpu, mem, storage, battery, clock, volume widgets
Showcase
<img width="1919" alt="image" src="https://github.com/user-attachments/assets/a3c513eb-aa52-4c50-8afc-5fcacec39ef5" />Install
AUR
paru -S krowbar-git
Cargo
cargo install krowbar
note: When installed via cargo you have to ensure krowbar is in PATH before BSPWM launches. Depending on your setup, appending to the PATH in .bashrc/.zshrc might be too late. Alternatively you can use global path, e.g. /home/user/.cargo/bin/krowbar & (which is not as nice).
Prebuilt binary
- Download the binary from Releases
tar -xzvf krowbar-{VERSION}-x86_64-linux-gnu.tar.gzcp krowbar-{VERSION}-x86_64-linux-gnu/krowbar /usr/local/bin/krowbar
Setup
Add this to your bspwmrc:
# Kill krowbar, when restarting BSPWM. Allows for quick iteration, if configuring.
killall krowbar
# Regular BSPWM monitor setup, krowbar will use these as dekstop names
bspc monitor {your-monitor-name} -d web code III IV V VI
# Start krowbar
krowbar &
Config
krowbar looks for a config at XDG_HOME/.config/krowbar/config.toml or path passed via --config.
All values are optional, redefine only those you want to change (see Examples section).
# Default values
[theme]
fg = "#ebc17a"
fg_dim = "#8b7653"
fg_bright = "#f7f7f7"
bg = "#1c1c1c"
bg_dim = "#232323"
ok = "#909d63"
ok_dim = "#5e6547"
alert = "#bc5653"
alert_dim = "#74423f"
warn = "#bc5653"
warn_dim = "#74423f"
bright = "#cacaca"
bright_dim = "#828282"
accent = "#bc5653"
[font]
font_family = "Terminess Nerd Font"
font_size = "16px"
font_weight = "bold"
[bar]
height = 30
position = "Top" # Top or Bottom
Args
Some additional configuration can be done via CLI args:
Status bar for BSPWM
Usage: krowbar [OPTIONS]
Options:
-d, --debug
Enable debug logging
--enabled-widgets <ENABLED_WIDGETS>
Enabled widgets [possible values: desktops, win-count, focused-name, network, cpu, mem, disk, bat, clock]
--disabled-widgets <DISABLED_WIDGETS>
Disabled widgets (takes precedence over --enabled-widgets) [possible values: desktops, win-count, focused-name, network, cpu, mem, disk, bat, clock]
--no-pad
Disable automatic padding. Useful when you want to manage padding yourself.
-c, --config <CONFIG>
Path to config. Defaults to ~/.config/krowbar/config.toml
-h, --help
Print help
-V, --version
Print version
Examples
krowbar classic

krowbar mute

[theme]
fg = "#cacaca"
fg_dim = "#828282"
krowbar moss

[theme]
fg = "#909d63"
fg_dim = "#5e6547"
accent = "#ebc17a"
[font]
font_family = "Terminess Nerd Font"
font_size = "12px"
font_weight = "bold"
[bar]
height = 20
krowbar might be for you, if you:
- Skipped on BSPWM, because it has no default status bar
- Are drowning in semi-working configuration
- Need a decently looking, functional status bar while searching for a nice eww config in /r/unixporn
- Always wanted something akin to i3status but for BSPWM
