rhythmcreative/hyprland

My Hyprland config for everyone.

Shell

33

599 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

[Hyprland] Same rice, different engine (r/unixporn)

This is hands down the biggest update I have worked on so far since my second post. I have rolled out full, native support across seven different distributions, keeping the exact same rice and workflow consistent everywhere. **Supported distributions:** NixOS, Debian, Fedora, CachyOS, Ubuntu, Arch…

2

Oct 9, 2026

README

rhythm's hyprland

Personal setup, customized for everyday use.

Arch Linux CachyOS Fedora Debian Ubuntu Alpine Linux openSUSE NixOS Hyprland Quickshell Rust--Dock Waybar Hyprlock Rofi Pywal SDDM

Typing SVG

Desktop preview


Typing SVG

The top notch expands smoothly on hover or via shortcut (Super + I), providing quick toggles, volume and brightness controls, media playback, live compositor adjustments, a screen recorder with live REC indicator, mic/camera privacy dots, Do Not Disturb mode and a built-in system updater.

Dynamic island animation

Control & system center

Control center full

Quick toggles for Wi-Fi, Bluetooth, audio sinks, Rust-Dock, night light, caffeine, Do Not Disturb, volume/brightness sliders, per-app mixer and MPRIS media player.

Hyprland compositor settings (Super + X)

Hyprland settings full

Live controls for corner rounding, window gaps, shadows, blur effects, animations, and monitor profiles without restarting.


Typing SVG

App launcher (Super + A)

Application launcher full

Fullscreen adaptive icon grid with fuzzy search.

Power menu (Super + BackSpace)

Power menu full

Quick session controls: Lock, sleep, logout, reboot, and shutdown.

Lock screen (Super + L)

Hyprlock full

Hyprlock with dynamic blur, date, time, and session greeting.

SDDM astronaut login

SDDM full

Astronaut display manager theme synced with current colors.


Typing SVG

When changing the wallpaper, Pywal automatically calculates the dominant colors and synchronizes waybar, quickshell, rust-Dock, rofi, GTK, and SDDM in real time with smooth transitions.

Ice blue

Ice blue theme

Autumn forest

Autumn forest theme

Sakura blossom

Sakura theme

Cyberpunk neon

Cyberpunk theme

570 wallpapers (jpg, png, webp) with animated gif, webp and mp4 support via ./install.sh --wallpapers [all|random]. Switch anytime directly from the desktop with Super + Shift + W (visual selector) or Super + Shift + B (random fade). Curated from FireWalls.


Typing SVG

Rust-dock

Custom native dock built in Rust with GTK4 and gtk4-layer-shell. Features multi-monitor support, dynamic Pywal color palette adaptation, pinned applications, and active window indicators. Toggle visibility anytime with Super + Space.


Typing SVG

Keybindings cheatsheet

Press Super + F to open an interactive search cheatsheet of every shortcut configured in the system.


Typing SVG

Quick install

Run directly from the terminal with curl:

curl -fsSL https://raw.githubusercontent.com/rhythmcreative/hyprland/main/install.sh | bash

Manual install

Clone the repository and run the script:

git clone https://github.com/rhythmcreative/hyprland.git ~/.config/hyprland-repo
cd ~/.config/hyprland-repo
./install.sh

[!IMPORTANT] Run the installer as your regular user, not as root or with sudo. Root privileges are asked via sudo when required.

Installer flags & headless options
FlagDescription
-y, --yesNon-interactive mode, automatically confirms prompts
--preview, --dry-runVisual simulation mode without applying changes
--no-rebootSkip reboot prompt at the end
--wallpapers <mode>Pre-select wallpaper mode: all, random, or none
--skip-wallpapersSkip downloading wallpaper packs
--gpu <type>Override GPU driver stack: nvidia, amd, intel, auto, none
--skip-gpuSkip GPU driver detection
--skip-rust-dockSkip building rust-dock
--skip-flatpaksSkip installing Flatpaks
--replace-configs-allOverwrite existing configurations directly without backups
-h, --helpShow available options
# Example unattended run
curl -fsSL https://raw.githubusercontent.com/rhythmcreative/hyprland/main/install.sh | bash -s -- -y --no-reboot --skip-wallpapers

Typing SVG

Press Super + F anytime on your desktop to search all shortcuts interactively.

Most entries below are direct keybindings and fire on their own. The ones marked (via Super + F) are not bound to a key: they are actions the cheat sheet runs for you. Press Super + F, find the entry, hit enter. The three scripts behind them are panic-mode, toggle-scratchpad and layout-preset.

ShortcutAction
Super + ReturnLaunch terminal (Kitty)
Super + SpaceToggle Rust-Dock
Super + IToggle dynamic island (notch)
Super + FInteractive keybindings cheatsheet
Super + XQuick compositor settings
Super + AApplication launcher
Super + EFile manager (Thunar)
Super + QClose focused window
Super + BackSpacePower menu (reboot / shutdown / sleep)
Super + Ctrl + DDo Not Disturb toggle
Super + Alt + 1/2/3Layout presets (code / reading / float) (via Super + F)
Super + EscPanic mode (hide all + mute) (via Super + F)
View complete keybindings list (30+ shortcuts)
ShortcutActionDescription
Super + ReturnLaunch terminalOpens Kitty terminal
Super + SpaceToggle Rust-DockShows or hides the bottom dock
Super + IToggle dynamic islandExpands or collapses the notch
Super + FHotkeys cheatsheetInteractive keybinding search
Super + XQuick settingsFast Hyprland compositor controls
Super + NWi-Fi menuSelect and connect to networks
Super + BBluetooth menuPair and connect devices
Super + AApplication launcherRofi grid launcher
Super + EFile managerOpens Thunar
Super + QClose windowCloses focused window
Super + WToggle floatingSwitches between tiled and floating
Super + JToggle splitToggles horizontal / vertical split
Alt + ReturnFullscreenToggles window fullscreen
Super + TabWorkspace overviewVisual overview of workspaces
Super + MExit sessionExits Hyprland
Super + LLock screenHyprlock
Super + BackSpacePower menuShutdown, reboot, sleep options
Super + PScreenshotSlurp selection into Swappy editor
Super + Shift + PColor pickerHyprpicker hex copy
Super + Shift + PrintFull screenshotInstant capture
Super + Shift + WWallpaper selectorVisual wallpaper picker
Super + Shift + BRandom wallpaperSets a random wallpaper
Super + Shift + GPerformance modeToggles animations and blur for gaming
Super + Alt + 1/2/3Layout presetsCode, reading and float window layouts
Super + Ctrl + DDo Not DisturbSilence notifications, keeps history
Super + Ctrl + WWallpaper selector (via Super + F)Visual wallpaper picker
Super + Alt + MNoise suppressionRNNoise mic filter toggle
Super + EscPanic modeHide windows and mute instantly
Super + 1 .. 0Switch workspaceMove to workspace 1 through 10
Super + Shift + 1 .. 0Move to workspaceMove active window to workspace 1 to 10
F10Toggle bluetoothHardware toggle
F11 / F12Volume down / upFine audio tuning

Installed components & tools
ComponentTool
CompositorHyprland with official plugins
Dynamic islandQuickshell (Qt6 QML with IPC)
DockRust-Dock (GTK4 + gtk4-layer-shell)
Status barWaybar with Pywal colors
TerminalKitty
ShellZsh with syntax highlighting and autosuggestions
LauncherRofi with Pywal themes
LockscreenHyprlock + Hypridle
File managerThunar + Plugins & Tumbler
ThemingPywal (System-wide dynamic color synchronization)
Wallpaper engineawww for static plus mpvpaper for animated gif, webp and mp4
System CLIrhythm unified command with 11 groups
UpdatesOTA updater with migrations and pre-update snapshots
AudioPipewire + Wireplumber
Display managerSDDM astronaut theme with Pywal hook
AUR helperyay

Making it yours without losing it on update

Everything under ~/.config comes from this repo and is refreshed on every update. There is one place for your own changes, and it is loaded last, so it wins without opting out of anything new the repo adds.

FileFor
~/.config/hypr/user.luaExtra keybinds, window rules, animation tweaks
~/.config/kitty/user.confTerminal settings

Both are gitignored, so an update can never ship them over the top. Hyprland loads user.lua through loadfile inside pcall, so a typo there drops only your part and not the whole desktop. user.lua.example ships commented, with the usual cases.

If you edit a repo-owned file by hand anyway, rhythm-materialize notices that its bytes match neither what it laid last time nor what the repo ships, moves it into ~/.local/state/rhythm/user_edits/ before overwriting, and tells you. The edit survives as a fork of that one file.

Colour files (GTK 3/4, Rofi, Mako) are deliberately not in this repo. They are generated on your machine by pywal, so an update cannot revert them to a stale palette.

Maintenance & CLI helpers
CommandWhat it does
system-ota updatePull the repo, deploy, resync colours, reconcile, reload services
rhythm-doctorReport anything drifted or not delivered
rhythm-doctor --fixRepair what is repairable
rhythm-materialize --statusShow your overrides and the deploy ledger
rhythm commandsList all 80+ unified CLI helpers across 11 groups
rhythm wallpaper selector  # visual wallpaper picker
rhythm capture screenshot  # screenshot flows
rhythm toggle dnd          # flip Do Not Disturb
rhythm update check        # OTA status (dotfiles version + packages)
rhythm debug summary       # versions, failed services, layer counts

rhythm-doctor exists because a deploy structurally cannot reach everything: /etc/sddm/Xsetup is installed once outside ~/.config, so before the doctor a fix to it reached the repo and no machine that had already installed. It runs at the end of every update, and its findings count as update problems rather than being silently dropped.

State lives under ~/.local/state/rhythm/, not ~/.config, so the deploy can never overwrite it. The battery charge limit is there too, reapplied at every login by rhythm-battery-limit.service, because the kernel does not keep charge_control_end_threshold across reboots.


Made with ❤️ from rhythmcreative

arch-linux
arch-linux-setup
debian
fedora
fedora-linux
hyprland
hyprland-rice
hyprland-theme
linux
nixos
nixos-config
opensuse
pywal
quickshell
rice
rust
sddm
sddm-theme
ubuntu
wallpaper-theme

rhythmcreative/hyprland

My Hyprland config for everyone.

Shell

33

599 commits

updated Oct 12, 2026

See the code

See what people are saying

SourceMessageScoreDate

[Hyprland] Same rice, different engine (r/unixporn)

This is hands down the biggest update I have worked on so far since my second post. I have rolled out full, native support across seven different distributions, keeping the exact same rice and workflow consistent everywhere. **Supported distributions:** NixOS, Debian, Fedora, CachyOS, Ubuntu, Arch…

2

Oct 9, 2026

README

rhythm's hyprland

Personal setup, customized for everyday use.

Arch Linux CachyOS Fedora Debian Ubuntu Alpine Linux openSUSE NixOS Hyprland Quickshell Rust--Dock Waybar Hyprlock Rofi Pywal SDDM

Typing SVG

Desktop preview


Typing SVG

The top notch expands smoothly on hover or via shortcut (Super + I), providing quick toggles, volume and brightness controls, media playback, live compositor adjustments, a screen recorder with live REC indicator, mic/camera privacy dots, Do Not Disturb mode and a built-in system updater.

Dynamic island animation

Control & system center

Control center full

Quick toggles for Wi-Fi, Bluetooth, audio sinks, Rust-Dock, night light, caffeine, Do Not Disturb, volume/brightness sliders, per-app mixer and MPRIS media player.

Hyprland compositor settings (Super + X)

Hyprland settings full

Live controls for corner rounding, window gaps, shadows, blur effects, animations, and monitor profiles without restarting.


Typing SVG

App launcher (Super + A)

Application launcher full

Fullscreen adaptive icon grid with fuzzy search.

Power menu (Super + BackSpace)

Power menu full

Quick session controls: Lock, sleep, logout, reboot, and shutdown.

Lock screen (Super + L)

Hyprlock full

Hyprlock with dynamic blur, date, time, and session greeting.

SDDM astronaut login

SDDM full

Astronaut display manager theme synced with current colors.


Typing SVG

When changing the wallpaper, Pywal automatically calculates the dominant colors and synchronizes waybar, quickshell, rust-Dock, rofi, GTK, and SDDM in real time with smooth transitions.

Ice blue

Ice blue theme

Autumn forest

Autumn forest theme

Sakura blossom

Sakura theme

Cyberpunk neon

Cyberpunk theme

570 wallpapers (jpg, png, webp) with animated gif, webp and mp4 support via ./install.sh --wallpapers [all|random]. Switch anytime directly from the desktop with Super + Shift + W (visual selector) or Super + Shift + B (random fade). Curated from FireWalls.


Typing SVG

Rust-dock

Custom native dock built in Rust with GTK4 and gtk4-layer-shell. Features multi-monitor support, dynamic Pywal color palette adaptation, pinned applications, and active window indicators. Toggle visibility anytime with Super + Space.


Typing SVG

Keybindings cheatsheet

Press Super + F to open an interactive search cheatsheet of every shortcut configured in the system.


Typing SVG

Quick install

Run directly from the terminal with curl:

curl -fsSL https://raw.githubusercontent.com/rhythmcreative/hyprland/main/install.sh | bash

Manual install

Clone the repository and run the script:

git clone https://github.com/rhythmcreative/hyprland.git ~/.config/hyprland-repo
cd ~/.config/hyprland-repo
./install.sh

[!IMPORTANT] Run the installer as your regular user, not as root or with sudo. Root privileges are asked via sudo when required.

Installer flags & headless options
FlagDescription
-y, --yesNon-interactive mode, automatically confirms prompts
--preview, --dry-runVisual simulation mode without applying changes
--no-rebootSkip reboot prompt at the end
--wallpapers <mode>Pre-select wallpaper mode: all, random, or none
--skip-wallpapersSkip downloading wallpaper packs
--gpu <type>Override GPU driver stack: nvidia, amd, intel, auto, none
--skip-gpuSkip GPU driver detection
--skip-rust-dockSkip building rust-dock
--skip-flatpaksSkip installing Flatpaks
--replace-configs-allOverwrite existing configurations directly without backups
-h, --helpShow available options
# Example unattended run
curl -fsSL https://raw.githubusercontent.com/rhythmcreative/hyprland/main/install.sh | bash -s -- -y --no-reboot --skip-wallpapers

Typing SVG

Press Super + F anytime on your desktop to search all shortcuts interactively.

Most entries below are direct keybindings and fire on their own. The ones marked (via Super + F) are not bound to a key: they are actions the cheat sheet runs for you. Press Super + F, find the entry, hit enter. The three scripts behind them are panic-mode, toggle-scratchpad and layout-preset.

ShortcutAction
Super + ReturnLaunch terminal (Kitty)
Super + SpaceToggle Rust-Dock
Super + IToggle dynamic island (notch)
Super + FInteractive keybindings cheatsheet
Super + XQuick compositor settings
Super + AApplication launcher
Super + EFile manager (Thunar)
Super + QClose focused window
Super + BackSpacePower menu (reboot / shutdown / sleep)
Super + Ctrl + DDo Not Disturb toggle
Super + Alt + 1/2/3Layout presets (code / reading / float) (via Super + F)
Super + EscPanic mode (hide all + mute) (via Super + F)
View complete keybindings list (30+ shortcuts)
ShortcutActionDescription
Super + ReturnLaunch terminalOpens Kitty terminal
Super + SpaceToggle Rust-DockShows or hides the bottom dock
Super + IToggle dynamic islandExpands or collapses the notch
Super + FHotkeys cheatsheetInteractive keybinding search
Super + XQuick settingsFast Hyprland compositor controls
Super + NWi-Fi menuSelect and connect to networks
Super + BBluetooth menuPair and connect devices
Super + AApplication launcherRofi grid launcher
Super + EFile managerOpens Thunar
Super + QClose windowCloses focused window
Super + WToggle floatingSwitches between tiled and floating
Super + JToggle splitToggles horizontal / vertical split
Alt + ReturnFullscreenToggles window fullscreen
Super + TabWorkspace overviewVisual overview of workspaces
Super + MExit sessionExits Hyprland
Super + LLock screenHyprlock
Super + BackSpacePower menuShutdown, reboot, sleep options
Super + PScreenshotSlurp selection into Swappy editor
Super + Shift + PColor pickerHyprpicker hex copy
Super + Shift + PrintFull screenshotInstant capture
Super + Shift + WWallpaper selectorVisual wallpaper picker
Super + Shift + BRandom wallpaperSets a random wallpaper
Super + Shift + GPerformance modeToggles animations and blur for gaming
Super + Alt + 1/2/3Layout presetsCode, reading and float window layouts
Super + Ctrl + DDo Not DisturbSilence notifications, keeps history
Super + Ctrl + WWallpaper selector (via Super + F)Visual wallpaper picker
Super + Alt + MNoise suppressionRNNoise mic filter toggle
Super + EscPanic modeHide windows and mute instantly
Super + 1 .. 0Switch workspaceMove to workspace 1 through 10
Super + Shift + 1 .. 0Move to workspaceMove active window to workspace 1 to 10
F10Toggle bluetoothHardware toggle
F11 / F12Volume down / upFine audio tuning

Installed components & tools
ComponentTool
CompositorHyprland with official plugins
Dynamic islandQuickshell (Qt6 QML with IPC)
DockRust-Dock (GTK4 + gtk4-layer-shell)
Status barWaybar with Pywal colors
TerminalKitty
ShellZsh with syntax highlighting and autosuggestions
LauncherRofi with Pywal themes
LockscreenHyprlock + Hypridle
File managerThunar + Plugins & Tumbler
ThemingPywal (System-wide dynamic color synchronization)
Wallpaper engineawww for static plus mpvpaper for animated gif, webp and mp4
System CLIrhythm unified command with 11 groups
UpdatesOTA updater with migrations and pre-update snapshots
AudioPipewire + Wireplumber
Display managerSDDM astronaut theme with Pywal hook
AUR helperyay

Making it yours without losing it on update

Everything under ~/.config comes from this repo and is refreshed on every update. There is one place for your own changes, and it is loaded last, so it wins without opting out of anything new the repo adds.

FileFor
~/.config/hypr/user.luaExtra keybinds, window rules, animation tweaks
~/.config/kitty/user.confTerminal settings

Both are gitignored, so an update can never ship them over the top. Hyprland loads user.lua through loadfile inside pcall, so a typo there drops only your part and not the whole desktop. user.lua.example ships commented, with the usual cases.

If you edit a repo-owned file by hand anyway, rhythm-materialize notices that its bytes match neither what it laid last time nor what the repo ships, moves it into ~/.local/state/rhythm/user_edits/ before overwriting, and tells you. The edit survives as a fork of that one file.

Colour files (GTK 3/4, Rofi, Mako) are deliberately not in this repo. They are generated on your machine by pywal, so an update cannot revert them to a stale palette.

Maintenance & CLI helpers
CommandWhat it does
system-ota updatePull the repo, deploy, resync colours, reconcile, reload services
rhythm-doctorReport anything drifted or not delivered
rhythm-doctor --fixRepair what is repairable
rhythm-materialize --statusShow your overrides and the deploy ledger
rhythm commandsList all 80+ unified CLI helpers across 11 groups
rhythm wallpaper selector  # visual wallpaper picker
rhythm capture screenshot  # screenshot flows
rhythm toggle dnd          # flip Do Not Disturb
rhythm update check        # OTA status (dotfiles version + packages)
rhythm debug summary       # versions, failed services, layer counts

rhythm-doctor exists because a deploy structurally cannot reach everything: /etc/sddm/Xsetup is installed once outside ~/.config, so before the doctor a fix to it reached the repo and no machine that had already installed. It runs at the end of every update, and its findings count as update problems rather than being silently dropped.

State lives under ~/.local/state/rhythm/, not ~/.config, so the deploy can never overwrite it. The battery charge limit is there too, reapplied at every login by rhythm-battery-limit.service, because the kernel does not keep charge_control_end_threshold across reboots.


Made with ❤️ from rhythmcreative

arch-linux
arch-linux-setup
debian
fedora
fedora-linux
hyprland
hyprland-rice
hyprland-theme
linux
nixos
nixos-config
opensuse
pywal
quickshell
rice
rust
sddm
sddm-theme
ubuntu
wallpaper-theme