Runtime and build dependencies for hyprbinds. Distro package names below are Arch/CachyOS-oriented; equivalents exist on other distros.
| Package | Why |
|---|---|
rust / cargo |
Compile the app |
gtk4 |
Legacy/developer GTK compatibility UI (--gtk) |
qt6-base |
Qt runtime/base libraries for the primary QML UI |
qt6-declarative |
Qt Quick / QML runtime and development files |
qt6-tools |
Qt build tooling used by the QML bridge |
cmake / ninja |
Native build tooling used by CXX-Qt |
pkgconf |
Find GTK/Qt native dependencies |
gcc / base-devel |
Compile/link native dependencies |
Cargo crates (see Cargo.toml): gtk4, cxx, cxx-qt, cxx-qt-lib, serde, serde_json, dirs, thiserror, hidapi, via-protocol.
sudo pacman -S rust gtk4 qt6-base qt6-declarative qt6-tools cmake ninja pkgconf base-devel
cargo build --releaseThe primary desktop launch path is the QML UI. The GTK UI remains available with hyprbinds --gtk as a compatibility path and for the experimental companion studios while those surfaces are migrated.
Talks to VIA-enabled QMK keyboards over USB HID (usage page 0xFF60). On Linux you need read/write access to the keyboard's hidraw node — either run as a user in the right group or install a udev rule, then re-plug:
# Example udev rule (adjust idVendor/idProduct or match usage page)
echo 'KERNEL=="hidraw*", ATTRS{idVendor}=="342d", MODE="0666"' | sudo tee /etc/udev/rules.d/99-via-hid.rules
sudo udevadm control --reload-rules && sudo udevadm triggerKeyboard definition JSON files live in ~/.config/hyprbinds/via-definitions/ (sideload via Load definition…, same format as VIA's Design tab). Bundled examples ship in the repo via-definitions/ folder.
| Package | Why |
|---|---|
hyprland |
Compositor + hyprctl (load monitors/clients, health) |
lua |
Your Hyprland Lua config stack (user environment) |
Optional but useful while editing:
| Package | Why |
|---|---|
wl-clipboard |
System clipboard helpers (GTK clipboard still works without it) |
Companion studios (Waybar, Wallpaper, Starship, VIA, Audio, Screenshare) live under the sidebar Experimental section — enable Developer mode on the Health page to show them.
These are not linked into the binary. Health probes them with systemctl, pgrep, pactl, and filesystem checks. Install what you use:
| Package | Why |
|---|---|
xdg-desktop-portal |
Desktop portals (file pickers, screenshare) |
xdg-desktop-portal-hyprland |
Hyprland screenshare / portal backend |
xdg-desktop-portal-gtk |
Fallback portal (file dialogs) — recommended |
pipewire |
Audio + screenshare media |
wireplumber |
PipeWire session manager |
pipewire-pulse |
PulseAudio compatibility (pactl) |
pipewire-alsa |
ALSA compatibility (optional) |
libpulse |
Provides pactl on many setups |
systemd |
User units (systemctl --user) for service status |
Recommended one-liner (Arch):
sudo pacman -S xdg-desktop-portal xdg-desktop-portal-hyprland xdg-desktop-portal-gtk \
pipewire wireplumber pipewire-pulse pipewire-alsa libpulseEnable user audio services if needed:
systemctl --user enable --now pipewire.service pipewire-pulse.service wireplumber.serviceOptional portal preference (Health can suggest this):
mkdir -p ~/.config/xdg-desktop-portal
printf '%s\n' '[preferred]' 'default=hyprland;gtk' \
> ~/.config/xdg-desktop-portal/hyprland-portals.conf
systemctl --user restart xdg-desktop-portal xdg-desktop-portal-hyprland| Package / note | Why |
|---|---|
| Proprietary NVIDIA drivers (up to date) | Hyprland + screenshare on NVIDIA |
| Hyprland NVIDIA wiki env hints | Only if you hit black screens / share failures |
Health reports NVIDIA presence as an informational hint; it does not install drivers.
| Package | Why |
|---|---|
pipewire / pipewire-pulse / wireplumber |
Volume routing |
libpulse (pactl) |
Sink/source/stream control |
wireplumber (wpctl) |
Preferred volume get/set |
alsa-utils (amixer, alsamixer) |
ALSA mixer + terminal TUI |
A terminal (kitty, foot, alacritty, …) or $TERMINAL |
Launch alsamixer |
| Package | Why |
|---|---|
awww |
Wallpaper daemon + CLI (awww-daemon, awww img) |
Start daemon once (or add to Startup):
awww-daemon
# or in Hyprbinds Startup: awww-daemon| Package | Why |
|---|---|
waybar |
Status bar process (reload via SIGUSR2) |
Config files edited by the Waybar Studio page:
~/.config/waybar/config.jsonc(orconfig/config.json)~/.config/waybar/style.css
Apply snapshots both files before writing (same backup system as Hyprland config). Included module files are discovered for the UI but not rewritten.
sudo pacman -S waybar| Package | Why |
|---|---|
starship |
Cross-shell prompt (starship init, presets, preview) |
Config edited by the Starship Studio page:
~/.config/starship.toml(or$STARSHIP_CONFIG)
Options tab exposes 30 curated schema fields (prompt globals, character, directory, git, duration, identity, time). Config remains the full raw TOML editor. Shells detects installed shells and can Enable/Disable a Hyprbinds-managed init block. Apply snapshots before writing.
sudo pacman -S starshipEvery write snapshots the previous file to:
- sidecar:
hyprland.lua.hyprbinds.bak - history:
~/.config/hyprbinds/backups/<file>.<timestamp>.lua(keeps 12)
Restore (top bar or Ctrl+P → “Restore last good config”) copies the newest snapshot back.
| Package | Why |
|---|---|
systemd |
journalctl --user for the Logs viewer |
No extra packages beyond a normal systemd user session.
Optional helpers used when collecting a pasteable hardware/software dump:
| Package | Why |
|---|---|
pciutils (lspci) |
GPU + PCI device IDs |
usbutils (lsusb) |
USB peripheral IDs |
util-linux (lscpu, lsblk, uname) |
CPU / disks / kernel |
procps-ng / procps (free) |
Memory summary |
systemd (hostnamectl) |
Distro / firmware summary |
libpulse (pactl) |
Audio server + sinks |
pacman (Arch) / dpkg / rpm |
Package version queries |
DMI board/BIOS fields are read from /sys/class/dmi/id (no dmidecode required). Serial numbers and product UUIDs are omitted from the report.
sudo pacman -S pciutils usbutils util-linux procps-ng libpulse