Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

304 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation



hydebar

A fast, beautiful Wayland status bar for Hyprland

Packaging status

⚑ Blazing fast β€’ 🎨 Beautiful themes β€’ πŸ”§ Easy configuration


Features

Core Modules

  • πŸͺŸ Workspaces - Hyprland workspace integration
  • πŸ“ Window Title - Active window information
  • ⏰ Clock - Customizable date/time format
  • πŸ“Š System Info - CPU, RAM, temperature, disk, network speeds
  • πŸ”‹ Battery - Battery status and power profiles
  • πŸ“‘ Network - WiFi with signal strength %, VPN, connection management
  • πŸ”Š Audio - Volume control with inline sliders, sink/source selection
  • 🎡 Media Player - MPRIS integration with playback controls
  • πŸ’‘ Brightness - Screen brightness control with inline slider
  • πŸ”΅ Bluetooth - Device management with quick connect/disconnect, battery levels
  • πŸ“‹ Tray - System tray support
  • πŸ”„ Updates - Package update notifications
  • πŸ”’ Privacy - Camera/microphone/screenshare indicators
  • ⌨️ Keyboard Layout - Layout switching with custom labels
  • πŸš€ App Launcher - Quick app launcher button
  • πŸ”” Notifications - Notification center with D-Bus integration, DND mode
  • πŸ“Έ Screenshot - Screenshot and screen recording (grim/slurp/wf-recorder)
  • β˜• Idle Inhibitor - One click toggle keeping the session awake
  • βš™οΈ Settings Panel - Comprehensive settings menu

Visual Features

  • 🎨 11 Built-in Themes - Catppuccin, Dracula, Nord, Gruvbox, Tokyo Night
  • ✨ Smooth Animations - Menu fade in/out, hover effects
  • 🏝️ Multiple Styles - Islands, Solid, Gradient
  • 🎭 Opacity Control - Transparent backgrounds and menus

Customization

  • πŸ“¦ Custom Modules - Extend with your own scripts
  • 🎨 Full Color Control - Customize every color
  • πŸ“ Flexible Layout - Position modules left/center/right
  • πŸ”„ Hot Reload - Config changes apply instantly

Quick Start

Installation

Arch Linux

# Stable release
paru -S hydebar

# Development version
paru -S hydebar-git

ALT Linux

sudo apt-get install hydebar

Nix

# Stable
nix profile install github:RAprogramm/hydebar?ref=0.6.7

# Latest
nix profile install github:RAprogramm/hydebar

See Installation Guide for more options.

Basic Configuration

Create ~/.config/hydebar/config.toml:

# Use a preset theme
appearance = "catppuccin-mocha"

# Or customize colors
[appearance]
style = "Islands"
opacity = 0.95
background_color = "#1e1e2e"
primary_color = "#cba6f7"
text_color = "#cdd6f4"

# Configure animations
[appearance.animations]
enabled = true
menu_fade_duration_ms = 200

# Module layout
[modules]
left = ["Workspaces"]
center = ["WindowTitle"]
right = [["Privacy", "Notifications", "Screenshot"], "Clock", "Settings"]

Available Themes

# Catppuccin variants
appearance = "catppuccin-mocha"      # Dark purple
appearance = "catppuccin-macchiato"  # Dark blue
appearance = "catppuccin-frappe"     # Lighter purple
appearance = "catppuccin-latte"      # Light theme

# Other popular themes
appearance = "dracula"          # Dark purple/pink
appearance = "nord"             # Cool blue
appearance = "gruvbox-dark"     # Warm retro dark
appearance = "gruvbox-light"    # Warm retro light
appearance = "tokyo-night"      # Dark with neon accents
appearance = "tokyo-night-storm"
appearance = "tokyo-night-light"

Screenshots

Themes

Catppuccin Mocha Dracula
Mocha Dracula

Menus

Settings Panel Power Menu
Settings Power
Network Menu Bluetooth Menu
Network Bluetooth

Documentation


Advanced Configuration

Custom Modules

[[CustomModule]]
name = "CustomNotifications"
icon = ""
command = "swaync-client -t -sw"
command_right = "swaync-client -d -sw"
command_middle = "swaync-client -C"
listen_cmd = "swaync-client -swb"
icons.'dnd.*' = ""
alert = ".*notification"

listen_cmd keeps a process alive and reads one JSON object per line. When the data comes from a command that exits instead, use exec together with interval (seconds) and, optionally, signal:

[[CustomModule]]
name = "cpuinfo"
command = ""
exec = "hyde-shell cpuinfo"
interval = 5

[[CustomModule]]
name = "updates"
command = "hyde-shell app system.update.sh up"
exec = "hyde-shell system.update"
interval = 86400
signal = 20

exec runs once at startup and again on every interval tick. signal = 20 registers SIGRTMIN+20, so pkill -RTMIN+20 hydebar refreshes the module immediately β€” the same contract Waybar scripts use.

Context Menus

A module can open a menu on a right press instead of running a command. Each entry carries a label, the command it runs and optionally a glyph:

[[CustomModule]]
name = "power"
icon = ""
command = "hyde-shell logoutlaunch 1"

[[CustomModule.menu]]
label = "Lock"
icon = "󰍁"
command = "hyde-shell lockscreen.sh"

[[CustomModule.menu]]
label = "Shutdown"
icon = "󰚦"
command = "systemctl poweroff"

The menu is anchored under the module, and selecting an entry runs its command and closes the menu. Declaring at least one entry takes precedence over command_right, which is then ignored: one press cannot both open a menu and run a command.

System Information

The module needs no configuration: it looks the machine over and draws load, memory and whichever temperatures the hardware actually reports. A processor temperature appears where a processor chip reports one, a graphics temperature and a graphics load appear where a graphics device reports them, and a machine that reports neither simply shows neither - no blank, no dash, no log line. The reading of a graphics block built into the processor is tagged iGPU, so it is never mistaken for a card.

Configuration only overrides that: indicators pins the readouts and their order, hide drops one from the automatic selection, and [system.gpu] names which device to watch on a machine with more than one.

[system]
# Optional: pin the readouts and their order.
indicators = ["Cpu", "Memory", "CpuTemperature", "GpuTemperature", {"disk" = "/"}]
# Optional: drop a readout the panel would otherwise draw.
hide = ["GpuUsage"]

[system.cpu]
warn_threshold = 60
alert_threshold = 80

[system.gpu]
# Optional: "amd", "intel", "nvidia", a driver name, "discrete" or "integrated".
device = "discrete"
warn_threshold = 70
alert_threshold = 85

Power Management

[settings]
lock_cmd = "hyprlock &"
shutdown_cmd = "shutdown now"
suspend_cmd = "systemctl suspend"
reboot_cmd = "systemctl reboot"
logout_cmd = "loginctl kill-user $(whoami)"

Full configuration reference at docs/configuration.


Performance

  • πŸš€ Fast Startup - < 50ms first paint
  • πŸ’Ύ Low Memory - < 5MB idle
  • ⚑ Efficient - < 1% CPU when idle
  • πŸ¦€ 100% Rust - Memory-safe, zero-cost abstractions

See PERFORMANCE.md for benchmarks.


Development

Building from Source

git clone https://github.com/RAprogramm/hydebar.git
cd hydebar
cargo build --release
./target/release/hydebar-app

Contributing

Contributions are welcome! See CONTRIBUTING.md for detailed guidelines.

Quick links:


Troubleshooting

Graphics Issues

If you experience transparency or rendering issues:

WGPU_BACKEND=gl hydebar

This forces OpenGL instead of Vulkan.

Only One Bar Per User

Starting hydebar while another copy is running does not add a second bar: the new process asks the running one to quit, waits for it to take its surfaces off the screen and then takes over. If the running bar does not go away within two seconds the newcomer prints an error and exits without drawing anything.

Ownership is recorded in $XDG_RUNTIME_DIR/hydebar/instance.lock, or in /tmp/hydebar-$UID/instance.lock when the session exports no runtime directory. The identity is the user, not the configuration file, because a bar claims the surfaces of every requested output; --config-path therefore selects which configuration the single instance reads rather than starting a second bar. A lock file left behind by a crashed bar never blocks a restart.

Hyprland-Only Features

Currently relies on hyprland-rs for:

  • Active window information
  • Workspace management
  • Keyboard layout

Support for other compositors is planned but not yet implemented.


Acknowledgements

hydebar evolved from ideas initially explored in the ashell project. The current architecture benefits from those early prototypes.


License

Licensed under the MIT License. See LICENSE for details.


Made with ❀️ for the Hyprland community

Website β€’ Issues β€’ Discussions

Releases

Packages

Contributors

Languages