KWYBARS(1)
π 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 atTARGET. 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β matchesWALLPAPERby filename stem against images inDIR, then sets[image_overlay].enabledand[image_overlay].pathin the selected config. the lookup order ispng,webp,jpg, thenjpegβ she checks in that exact order, don't @ her πvalidate-config [--config PATH]β validates the selected config file, the adjacentcolors.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 forswitch-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 forimage-overlay matchlookups
π§ CONFIGURATION π§
the default config path is resolved in this order, first one wins bestie:
KWYBARS_CONFIG$XDG_CONFIG_HOME/kwybars/config.toml$HOME/.config/kwybars/config.toml./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 whenXDG_STATE_HOMEis unset~/.local/state/kwybars/overlay.logβ default overlay log file whenXDG_STATE_HOMEis unset
β ENVIRONMENT β
KWYBARS_CONFIGβ overrides the default config pathKWYBARS_THEMES_DIRβ overrides the packaged built-in theme directoryKWYBARS_LOGβ controls tracing verbosity. falls back toRUST_LOGwhen unsetKWYBARS_LOG_FILEβ overrides the log file target for the current processKWYBARS_FRAME_SOCKETβ internal daemon-to-overlay frame stream socket. normally set bykwybars-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 daemonGSK_RENDERERβ GTK renderer override. the overlay defaults this tocairowhen unsetWAYLAND_DISPLAYβ Wayland display socket name. required for overlay display, though the daemon can recover from some missing environment cases by inspectingXDG_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
- nixpkgs unstable: kwybars 0.2.0
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms