A fast, minimal GUI to view Hyprland keybinds parsed from hyprctl binds. Built with Rust + eframe/egui.
- Linux + Hyprland running
hyprctlavailable in PATH- Rust toolchain:
cargo(to build from source)
# Clone
git clone https://github.com/ry2x/HyprBind.git
cd HyprBind
# Build & run (debug)
cargo run
# Build release
cargo build --release
# for arch linux, this project has PKGBUILD
makepkg -si- For Arch Linux users, you can also download prebuilt package from releases page.
# After downloading from releases
sudo pacman -U hyprbind-<tag>-x86_64.pkg.tar.zst- Start the app. It will run
hyprctl binds, parse the output, and show the table. - Press
/to focus the search bar; typing filters in real time. - Click column headers to sort (asc/desc/none).
- Drag column borders to resize.
- Open Options (gear icon):
-
Switch theme (Dark/Light)
-
Choose visible columns and search targets
-
Enable ZEN mode; a modal appears once. Press
Zto exit (info modal: Enter to close) -
Press ESC to close Options
-
Note
The documentation for hyprland config is here
Descriptions are taken from bindd entries. Example in your Hyprland config:
bindd = SUPER, Return, Terminal, exec, kitty # description is "Terminal"
bindd = SUPER+SHIFT, Q, Kill active window, killactive # description is "Kill active window"Plain bind also works but description will be empty:
bind = SUPER, F, exec, thunar # description is empty- In dev builds, you might see a transient "Unaligned" overlay while resizing columns. This is an egui debug hint and does not appear in release builds.
- For very long keybinds/commands, overflowing text is clipped by the column; hover to see the full command.
-
Print keybinds as JSON and exit:
cargo run -- --json
- or after installing:
hyprbind --json
-
Print keybinds in dmenu-compatible format and exit:
cargo run -- --dmenu
- or after installing:
hyprbind --dmenu
- Usage with dmenu:
hyprbind --dmenu | dmenu -l 20
- Config file:
$XDG_CONFIG_HOME/hyprbind/config.json(fallback:~/.config/hyprbind/config.json) - Preferences are saved automatically on change and loaded on startup
-
Dark and Light themes available
-
Custom CSS support (CSS theme will override built-in themes)
- CSS path:
$XDG_CONFIG_HOME/hyprbind/hyprbind-theme.css(fallback:~/.config/hyprbind/hyprbind-theme.css) - Generate default CSS:
# default hyprbind --write-default-css # force overwrite hyprbind --force-write-default-css
- Sample:
hyprbind-theme.sample.css - Modify and save the CSS file, the app will auto-reload the CSS: Matugen or pywal etc..
- Example matugen templete is here: template in my dotfile
- CSS path:
Note
@import is NOT supported in hyprbind's css.
Contributions are welcome! Feel free to open issues or PRs on GitHub
- eframe/egui + egui_extras (TableBuilder)
- image (embedded logo)
- nerd_font (embedded Nerd Font data)
SourceCode: MIT
Font: SIL OFL 1.1


