-
-
Notifications
You must be signed in to change notification settings - Fork 1
Waybar Modules
bitzzdev edited this page Aug 7, 2026
·
2 revisions
Waybar is configured with 15 modules in waybar/config.jsonc. Custom modules are styled by wallust so colors always match the wallpaper.
Left: custom/workspaces | custom/runcat | custom/media
Center: clock
Right: tray | custom/recording | custom/brightness | pulseaudio |
cpu | memory | custom/power-profiles | custom/notification |
network | bluetooth | custom/power
Batch-based workspace display showing 5 workspaces at a time, centered on the active one.
-
Script:
waybar/scripts/workspaces.sh - Poll interval: 2s
-
Icons:
[N]= active,|N|= occupied,N= empty -
Click: Focus workspace (via
workspace-click.sh) - Scroll: Cycle workspaces (prev/next)
CPU activity animation — a running cat that speeds up when CPU is busy.
-
Script:
waybar/modules/runcat-text/main.py(Python) - Output: JSON with emoji/text animation based on CPU usage
-
Disable: Remove from
modules-leftin config.jsonc for low-end systems
Now-playing media display with playerctl integration.
-
Script:
waybar/scripts/media.sh -
Format:
icon artist - title(truncated) -
On startup: Kills stale
playerctl metadata --followprocesses to prevent CPU leaks - Click: Play/Pause | Right click: Stop | Scroll: Next/Previous
Screen recording indicator — blinks when wf-recorder is active.
-
Script:
waybar/scripts/recording-indicator.sh - Poll interval: 10s
- Output: Empty normally, blinking icon when recording
Display backlight control.
-
Script:
waybar/scripts/brightness.sh - Poll interval: 5s
- Icons: 4 levels (full, high, low, off) + percentage
-
Scroll: Adjust brightness by ±5% (via
brightness-adjust.sh)
UPower power profile management (power-saver / balanced / performance).
-
Script:
waybar/scripts/power-profile.sh - Poll interval: 5s
-
Implementation: Uses
busctldirectly on the UPower D-Bus interface (avoids hang-pronepowerprofilesctl) -
Click: Cycle to next profile via
power-profile-switch.sh
Notification center toggle.
-
Script:
waybar/scripts/notification.sh - Poll interval: 10s
-
Click: Toggle panel (
swaync-client -t) -
Right click: Toggle Do Not Disturb (
swaync-client -d)
Power menu trigger.
-
No script — uses format +
on-clickdirectly -
Click: Opens rofi power menu (
system-power.sh)
-
Format:
{:%I:%M %p}(12-hour), tooltip shows a calendar - Interval: 30s
- Icons: WiFi (4 signal levels), ethernet, disconnected
-
Tooltip:
{essid} ({signalStrength}%) -
Click: opens
impalaWiFi TUI viatui-wifi.sh - Interval: 3s
- Icons: off, on (no connection), connected
-
Click: opens
bluetuiviatui-bluetooth.sh
- Icons: high, mid, low, muted (device-aware icons)
-
Format:
{icon} {volume}% -
Click: opens
pulsemixerviatui-audio.sh - Scroll: Volume ±5%
-
Format:
{usage}%with CPU icon -
Click: opens
btopviatui-cpu.sh - Interval: 5s
-
Format:
{percentage}%with RAM icon -
Click: opens
btop - Interval: 10s
- Standard Wayland system tray, spacing 8px
All system tools open in floating kitty windows with class system-tui (auto-floated by hypr/rules.lua):
| Tool | Opens | Waybar Click |
|---|---|---|
| impala | WiFi network manager | network |
| bluetui | Bluetooth manager | bluetooth |
| pulsemixer | Audio mixer | pulseaudio |
| btop | System monitor | cpu / memory |
- Add to
waybar/config.jsonc:
- Style it in
waybar/style.css(or thewaybar.css.j2template for permanence) - Restart waybar:
pkill -x waybar && waybar &
# Restart waybar
pkill -x waybar && waybar &
# View logs
journalctl --user -u waybar -f
# Test a script manually
~/.config/waybar/scripts/workspaces.sh