KWYBARS(1)

πŸ“¦ version 0.2.0, in nixpkgs unstable

πŸ’… KWYBARS(1) β€” the user commands girlies ✨

okay so bestie, this is the kwybars family of commands: kwybars-daemon, kwybars-overlay, and kwybarsctl. it's a whole little squad, and i'm gonna introduce you to every single one πŸ’–


🌸 NAME 🌸

kwybars β€” the GTK4 Wayland audio visualizer overlay, aka the prettiest thing on your desktop kwybars-daemon β€” the one that starts and supervises the Kwybars overlay (the mom friend) kwybars-overlay β€” the one that actually renders the visualizer overlay (the main character) kwybarsctl β€” the one that inspects and manages your Kwybars configuration (the nosy bestie who knows everything)


✨ SYNOPSIS ✨

kwybars-daemon [options]
kwybars-overlay [options]
kwybarsctl command [options]

πŸ¦‹ DESCRIPTION πŸ¦‹

Kwybars is a Wayland-first desktop audio visualizer, and it ate. it renders GTK4 bars as a transparent layer-shell overlay, usually anchored to a desktop edge. like, your music is playing and your screen is just vibing along. iconic behavior.

the recommended runtime entrypoint is kwybars-daemon. the daemon watches audio activity, starts kwybars-overlay when audio becomes active, stops it after silence when configured to do so, and shares one audio frame stream with the overlay process. she's the group-chat admin of this whole operation fr fr 🫢

the kwybars-overlay binary owns the GTK/layer-shell window and the rendering loop. it can be launched directly for development or troubleshooting, but daemon launch is preferred for normal desktop use. so like, yes you can text the main character directly, but the group chat works better 😭

the kwybarsctl binary provides read-only diagnostics plus safe config and image-overlay helpers. lowkey the most useful one for when something's acting up.


πŸŽ€ DAEMON OPTIONS πŸŽ€

  • -h, --help β€” shows daemon help. the "who am i" button 🫢
  • -c, --config PATH β€” loads a specific configuration file
  • --config=PATH β€” loads a specific configuration file (same thing, equals-sign flavor ✨)

πŸ’œ OVERLAY OPTIONS πŸ’œ

  • -h, --help β€” shows overlay help
  • -c, --config PATH β€” loads a specific configuration file
  • --config=PATH β€” loads a specific configuration file (identical twin, we stan consistency)

πŸ‘‘ CONTROL COMMANDS πŸ‘‘

  • switch-config [--active PATH] TARGET β€” atomically replaces the active config path with a symlink pointing at TARGET. by default, the active path is the normal Kwybars config path. it's a glow-up for your symlink, no cap πŸ’…
  • image-overlay match --overlay-dir DIR [--config PATH] WALLPAPER β€” matches WALLPAPER by filename stem against images in DIR, then sets [image_overlay].enabled and [image_overlay].path in the selected config. the lookup order is png, webp, jpg, then jpeg β€” she checks in that exact order, don't @ her πŸ“
  • validate-config [--config PATH] β€” validates the selected config file, the adjacent colors.toml, and the configured theme. a positional config path may be used instead of --config. self-care for your dotfiles ✨
  • doctor [--config PATH] β€” prints local runtime diagnostics, including Wayland session detection, Cava availability, config parse status, theme status, selected overlay values, and overlay frame-source state. literally the "what's wrong with me" quiz but for your setup 🩺
  • list-themes [--config PATH] β€” lists available user, packaged, and source-checkout themes using the same precedence as the runtime. window shopping for aesthetics πŸ›οΈ
  • -h, --help β€” shows control command help

🌈 CONTROL OPTIONS 🌈

  • -a, --active PATH β€” the active config path to update for switch-config
  • -c, --config PATH β€” the config path to update, validate, inspect, or use for theme lookup. she does it all πŸ’…
  • --overlay-dir DIR β€” directory containing images for image-overlay match lookups

🧚 CONFIGURATION 🧚

the default config path is resolved in this order, first one wins bestie:

  1. KWYBARS_CONFIG
  2. $XDG_CONFIG_HOME/kwybars/config.toml
  3. $HOME/.config/kwybars/config.toml
  4. ./kwybars.toml

if no config exists, Kwybars uses built-in defaults. no config, no problem, she's got you 🫢

packaged examples are installed under /usr/share/doc/kwybars/examples/, and source checkouts include examples under assets/examples/.

adjacent colors.toml files can override visualizer colors for the active config. cute little palette swap, we love to see it 🎨


πŸ¦„ FILES πŸ¦„

  • ~/.config/kwybars/config.toml β€” the default user configuration file
  • ~/.config/kwybars/colors.toml β€” optional adjacent color override file
  • ~/.config/kwybars/themes/ β€” user theme directory
  • /usr/share/kwybars/themes/ β€” packaged built-in themes
  • /usr/share/doc/kwybars/examples/ β€” packaged example configurations
  • /usr/lib/systemd/user/kwybars-daemon.service β€” the packaged user service
  • ~/.local/state/kwybars/daemon.log β€” default daemon log file when XDG_STATE_HOME is unset
  • ~/.local/state/kwybars/overlay.log β€” default overlay log file when XDG_STATE_HOME is unset

⭐ ENVIRONMENT ⭐

  • KWYBARS_CONFIG β€” overrides the default config path
  • KWYBARS_THEMES_DIR β€” overrides the packaged built-in theme directory
  • KWYBARS_LOG β€” controls tracing verbosity. falls back to RUST_LOG when unset
  • KWYBARS_LOG_FILE β€” overrides the log file target for the current process
  • KWYBARS_FRAME_SOCKET β€” internal daemon-to-overlay frame stream socket. normally set by kwybars-daemon (so like, hands off unless you know what you're doing πŸ™ˆ)
  • KWYBARS_DISABLE_NOTIFICATIONS β€” internal flag used to suppress duplicate overlay notifications when launched by the daemon
  • GSK_RENDERER β€” GTK renderer override. the overlay defaults this to cairo when unset
  • WAYLAND_DISPLAY β€” Wayland display socket name. required for overlay display, though the daemon can recover from some missing environment cases by inspecting XDG_RUNTIME_DIR. she's resilient like that πŸ’ͺ

πŸ”₯ EXAMPLES πŸ”₯

start the daemon manually:

kwybars-daemon

start with an explicit config:

kwybars-daemon --config ~/.config/kwybars/config.toml

run the overlay directly:

kwybars-overlay --config ./assets/examples/wave.toml

validate config:

kwybarsctl validate-config

run diagnostics:

kwybarsctl doctor

list themes:

kwybarsctl list-themes

switch the active config symlink:

kwybarsctl switch-config ~/.config/kwybars/presets/wave.toml

match a wallpaper to an image overlay:

kwybarsctl image-overlay match --overlay-dir
~/.config/kwybars/wallpaper-overlays
~/Pictures/wallpapers/forest.jpg

enable the packaged user service:

systemctl --user enable --now kwybars-daemon.service

πŸ’€ SEE ALSO πŸ’€

cava(1), systemctl(1), journalctl(1) β€” go read those too, iykyk πŸ“š


anyway that's the whole page, bestie πŸ’œ this was Kwybars 0.1.9, dated May 2026 β€” drink some water, systemctl --user enable --now your dreams, and go make your desktop gorgeous βœ¨πŸŽ€πŸ¦‹

πŸ“¦ where this page comes from