cachebag/blurs

A tiny Bluetooth applet for Wayland.

★ 14Forks 0RustGitHub ↗Compare

README

blurs

A tiny Bluetooth applet for Wayland.

crates.io AUR license binary

image

Install

Arch:

paru -S blurs # or yay

Anywhere else, with a Rust toolchain and the GTK4 development headers plus gtk4-layer-shell already present:

cargo install blurs

Or from source:

cargo build --release
install -m755 target/release/blurs ~/.local/bin/blurs

Release profile is tuned for size (opt-level="z", fat LTO, one codegen unit, panic=abort, stripped).

Integration

waybar (waybar/config) launches it from the bluetooth module:

"bluetooth": { "on-click": "blurs" }

Hyprland needs a layer rule.

hl.layer_rule({
    name = "blurs-blur",
    match = { namespace = "^blurs$" },
    blur = true,
    ignore_alpha = 0.3,
})

Placement

~/.config/blurs/config, or the same names as --flags (flags win):

anchor = cursor
margin = 8
width  = 360
max-height = 420

Anchors: top-left top top-right left center right bottom-left bottom bottom-right cursor.

cursor opens the panel over the pointer, so it lands above whichever bar module was clicked regardless of where that module sits. Wayland exposes no global pointer and layer-shell can't anchor to another surface, so this reads Hyprland's IPC socket; it falls back to a fixed corner where that's absent.

Theming

Colors are read from ~/.cache/wal/colors.sh at startup and emitted as GTK @define-color values, so this works quite well with pywal setups. colors.sh is parsed instead of colors.json purely to keep a JSON parser out of the binary.

Use ~/.config/blurs/style.css to override the built-in stylesheet entirely; the @define-color block is still prepended, so pywal names stay available.

License

MIT

Contributors

cachebag

Issues