10 releases (1 stable)

1.0.0 Oct 13, 2024
0.3.1 Oct 13, 2024
0.2.5 Oct 13, 2024
0.1.12 Oct 12, 2024

#60 in GUI

MIT license

64KB
1.5K SLoC

krowbar

GitHub release (latest SemVer)

"Oh, and before I forget, I think you dropped this back in Black Mesa!" [1]

Status bar made for BSPWM, focused on ease of use, stability and speed.

GitHub release (latest SemVer) GitHub Workflow Status

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 widgets

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

  1. Download the binary from Releases
  2. tar -xzvf krowbar-{VERSION}-x86_64-linux-gnu.tar.gz
  3. cp 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

Dependencies

~35–47MB
~1M SLoC