A minimal, highly modular, Lua-powered Hyprland setup for Arch Linux. Featuring Waybar, Rofi, Kitty, Cava, screenshot utilities, and a neutral charcoal and gray theme.
| Clean Desktop | Terminals & Visualizer |
|---|---|
![]() |
![]() |
| App Launcher (Rofi) | Lockscreen (Hyprlock) |
|---|---|
![]() |
![]() |
- 100% Lua-Based: Hyprland configured entirely through Lua for ultimate scriptability.
- Window Controls: Pin floating windows across workspaces and organize apps into tabbed groups.
- Modular Structure: Clean, separated configuration modules that are easy to read and maintain.
- Neutral Theme: Charcoal surfaces, soft white text, and gray accents across Rofi, Waybar, Hyprlock, and window borders.
- Cava Integration: Audio visualizer with multiple custom GLSL shaders (Spectrogram, Northern Lights, Orion, Winamp-style) and color themes.
- Clipboard History: Quick clipboard access using
cliphistand Rofi (SUPER + A). - Wallpaper Picker: Browse cached wallpaper thumbnails with
SUPER + ALT + W. - Dynamic Wallpapers: Switch between wallpapers using
ALT + 1-9, or hitALT + 0to select a random wallpaper! - Power Menu: Lock, suspend, log out, reboot, and shut down from Rofi (
SUPER + Escape). - Included Scripts: Custom utilities for screenshots and Waybar reloading.
hyprlandLua/
βββ LICENSE
βββ README.md
βββ .config
βββ cava
β βββ config
β βββ shaders/
β β βββ bar_spectrum.frag
β β βββ eye_of_phi.frag
β β βββ northern_lights.frag
β β βββ orion_circle.frag
β β βββ spectrogram.frag
β β βββ winamp_line_style_spectrum.frag
β βββ themes/
β βββ solarized_dark
β βββ tricolor
βββ hypr
β βββ hyprland.lua
β βββ hyprlock.conf
β βββ modules
β βββ autostart.lua
β βββ binds.lua
β βββ decorations.lua
β βββ env.lua
β βββ input.lua
β βββ layout.lua
β βββ misc.lua
β βββ monitors.lua
β βββ windowrules.lua
βββ kitty
β βββ kitty.conf
βββ rofi
β βββ wallpaper-picker.rasi
β βββ power-menu.rasi
β βββ clipboard.rasi
β βββ colors/
β βββ scripts/
β β βββ launcher.sh
β β βββ power-menu.sh
β β βββ wallpaper-picker.py
β βββ style.rasi
βββ screenshot
β βββ screenshot-script.sh
βββ wallpaper
β βββ pic1.png
β βββ ... (your wallpapers here)
βββ waybar
βββ colors/
βββ config.jsonc
βββ scripts/
β βββ launch.sh
βββ style.css
| Component | Path |
|---|---|
| Main Hyprland Config | ~/.config/hypr/hyprland.lua |
| Hyprlock Config | ~/.config/hypr/hyprlock.conf |
| Keybindings | ~/.config/hypr/modules/binds.lua |
| Decorations & Animations | ~/.config/hypr/modules/decorations.lua |
| Window Rules | ~/.config/hypr/modules/windowrules.lua |
| Cava Audio Config | ~/.config/cava/config |
| Cava Shaders | ~/.config/cava/shaders/ |
| Wallpapers Directory | ~/.config/wallpaper/ |
| Kitty Config | ~/.config/kitty/kitty.conf |
| Rofi Theme | ~/.config/rofi/style.rasi |
| Waybar Config | ~/.config/waybar/config.jsonc |
| Screenshot Script | ~/.config/screenshot/screenshot-script.sh |
This configuration requires Hyprland's native Lua configuration support and the hl API. See the Hyprland 0.55.0 configuration guide for the Lua configuration format. Installing standalone Lua does not add Lua configuration support to older Hyprland builds.
Check your installed version with hyprctl version. The desktop configuration has been exercised on Hyprland 0.56.2 with Hyprlock 0.9.6. The Lua API may differ between releases.
sudo pacman -S hyprland hyprlock waybar rofi kitty wl-clipboard cliphist swayncCurrent Arch Linux rofi packages include native Wayland support. Older distributions may still package it separately as rofi-wayland.
# Audio, brightness, screenshots, visualizer, and notifications
sudo pacman -S cava brightnessctl wireplumber playerctl grim slurp pavucontrol libnotifywireplumber provides wpctl for the volume and microphone bindings and requires a working PipeWire audio session. libnotify provides optional screenshot notifications. Install awww separately for wallpaper switching; autostart launches awww-daemon.
These applications are optional. Install them or change the corresponding commands in hyprland.lua and modules/binds.lua:
| Shortcut | Command | Application / Arch package |
|---|---|---|
SUPER + E |
nautilus |
Files (nautilus) |
SUPER + F |
firefox |
Firefox (firefox) |
SUPER + W |
kitty -e nmtui |
NetworkManager TUI (networkmanager) |
SUPER + B |
blueman-manager |
Bluetooth manager (blueman) |
SUPER + I |
idea |
IntelliJ IDEA; ensure its launcher is on PATH |
The themes reference Iosevka Nerd Font (including the Propo variant) and JetBrainsMono Nerd Font. Install these fonts or update the font settings in Waybar, Rofi, Kitty, and Hyprlock to match your installed fonts.
1. Clone the Repository
git clone https://github.com/KrishnaX12/hyprlandLua.git
cd hyprlandLua2. Make Scripts Executable
chmod +x .config/rofi/scripts/wallpaper-picker.py .config/rofi/scripts/power-menu.sh .config/rofi/scripts/launcher.sh .config/screenshot/screenshot-script.sh .config/waybar/scripts/launch.sh3. Back Up and Copy Configuration Files
Back up any existing ~/.config/{cava,hypr,kitty,rofi,screenshot,wallpaper,waybar} directories before continuing. The copy command below merges directories and overwrites matching files.
mkdir -p ~/.config
cp -r .config/* ~/.config/4. Start the Session
Review hyprland.lua and modules/monitors.lua for your applications and displays. Log out and start a new Hyprland session after the first installation so the hyprland.start handler launches Waybar, SwayNC, the wallpaper daemon, and clipboard history.
For later configuration edits, reload without restarting the session:
hyprctl reloadReloading does not rerun the hyprland.start handler.
| Shortcut | Action |
|---|---|
SUPER + P |
Make the focused window floating and toggle pinning across workspaces |
SUPER + V |
Toggle floating / tiling |
SUPER + G |
Create or dissolve a tabbed group |
SUPER + Tab |
Next window in the focused group |
SUPER + SHIFT + Tab |
Previous window in the focused group |
SUPER + CTRL + Arrow |
Move the focused window into the neighboring window's group, creating a group if needed |
SUPER + P replaces the previous pseudotiling shortcut. Unpinning leaves the window floating; use SUPER + V after unpinning to return it to tiling. Move floating windows with SUPER + left mouse drag and resize with SUPER + right mouse drag.
To try tabs, open two terminals side by side, focus one, and press SUPER + CTRL + Left or Right toward the other. Both now share a tile. Click a title or use the Tab shortcuts to switch. SUPER + G dissolves the group. Single-window groups hide their tab bar; selected tabs use light gray with dark text.
These controls use native Hyprland dispatchers and require no plugin. Group appearance is configured in modules/decorations.lua.
Install Python and ImageMagick (sudo pacman -S python imagemagick), plus awww for applying wallpapers. The existing autostart module starts awww-daemon.
Press SUPER + ALT + W, select a thumbnail, and press Enter to apply it. Escape cancels. The picker scans ~/.config/wallpaper/, including subdirectories, for PNG, JPEG, WebP, GIF, BMP, and AVIF files. Add images to this directory and reopen the picker to see them. Existing ALT + 1β9 and ALT + 0 shortcuts remain available.
Thumbnails are cached under ${XDG_CACHE_HOME:-~/.cache}/wallpaper-picker/ and regenerated when an image changes. Delete this directory to clear the previews. Images that cannot be previewed still appear by filename. The first opening may take longer while previews are generated.
Press SUPER + Escape to open the power menu. Lock and suspend execute immediately. Log out, reboot, and shut down require a second confirmation, with Cancel selected by default. Escape closes either menu without taking action.
The menu uses hyprlock and systemctl. Log out uses hyprshutdown when installed, otherwise Hyprland's native Lua exit dispatcher. The physical power button keeps its existing behavior.
Rofi uses .config/rofi/colors/neutral.rasi; Waybar uses .config/waybar/colors/neutral.css. Hyprlock colors are in .config/hypr/hyprlock.conf, and window borders are in .config/hypr/modules/decorations.lua.
The palette uses charcoal #181a1b, white text #e6e6e6, gray accents #939a9e, and light active borders #b8bec2. Error and warning colors remain red and yellow. Waybar keeps the original volume/visualizer, centered clock/workspaces, and visualizer/battery layout.
After copying the files, reopen Rofi, reload Waybar with SUPER + R, and run hyprctl reload for window borders. Hyprlock reads its theme the next time you lock with SUPER + L.
β οΈ Disclaimer: Always back up your existing~/.configfiles before installation!
- Built and tested heavily on Arch Linux.
- Feel free to fork, modify, and improve. If you add cool new Lua modules, pull requests are welcome!
The configuration and scripts are available under the MIT License. Bundled wallpapers and third-party shaders retain their original authorsβ rights and licenses.



