Personal configuration for a Wayland desktop built around Hyprland and Niri. The repository installs compositor configuration, a generated visual theme, lock and login surfaces, helper scripts, and three native tools: Vigil, Luma, and TV mode.
- Hyprland and Niri share the same launch, lock, wallpaper, and cockpit workflows.
- Vigil is the always-visible desktop cockpit and notification server. It provides workspaces, urgent context, quick settings, timers, media, notifications, and monitor-aware control-center placement.
- Luma is the command palette for applications, files, windows, passwords, system controls, and Vigil handoffs.
- Dynamic Matugen themes cover Vigil, Luma, Hyprland, Hyprlock, Niri, Kitty, TV mode, greetd, and nwg-hello.
- Focused-output locking renders a privacy-bounded Hyprlock dashboard with calendar, timer, media, network, power, and notification-count context.
- Controller-first TV mode temporarily moves the session to the TV and restores the previous monitor and service state afterwards.
The configuration targets Arch Linux or a derivative. Core runtime dependencies are:
- Desktop:
hyprland,niri,hypridle,hyprlock,hyprsunset,kitty - Login:
greetd,nwg-hello - Desktop services:
pipewire,wireplumber,networkmanager,bluez,power-profiles-daemon,polkit-gnome - Helpers:
playerctl,pactl,wpctl,brightnessctl,notify-send,grim,slurp,wl-copy - Theming and wallpaper:
matugen,awww - Builds: a Rust toolchain for Vigil, Luma, and TV mode
Optional integrations include khal or gcalcli for calendar context, pass for passwords, Steam and Kodi for TV mode, Spotify for Bluetooth auto-launch, and Codex for self-improvement automation.
git clone --recurse-submodules https://github.com/robinp7720/dotfiles.git ~/.dotfiles
cd ~/.dotfiles
cargo build --release --manifest-path tools/bar/Cargo.toml
cargo build --release --manifest-path tools/launcher/Cargo.toml --bin Luma
cargo build --release --manifest-path tools/tv-mode/Cargo.toml
./setup.shsetup.sh links supported configuration under ~/.config, exposes built binaries under ~/.local/bin, installs user units, reloads the user daemon, and installs greetd/nwg-hello files when sudo is available. Existing non-symlink paths are moved to timestamped backups. Links managed by older versions for removed desktop stacks are cleaned up without touching foreign paths.
Use INSTALL_SYSTEM_CONFIG=0 ./setup.sh for a user-only pass that does not prompt for sudo or update greetd/nwg-hello under /etc.
Restart the session after initial installation. Individual changes can be applied with hyprctl reload, systemctl --user restart vigil.service, or systemctl --user restart awww-daemon.service awww-wallpaper.service.
hypr/,niri/— compositor configuration and monitor layoutsbar/— tracked Vigil runtime configuration and CSSkitty/— terminal configurationmatugen/— theme source templates; generated outputs should not be edited directlygreetd/,nwg-hello/— login screen configurationscripts/— wallpaper, lockscreen, calendar, media, and session helperssystemd/user/— Vigil, wallpaper, TV-mode, Spotify, and Codex unitstools/bar,tools/launcher— Vigil and Luma Git submodulestools/tv-mode— controller-first couch-session tooltv-mode/— TV-mode configuration and themetests/— desktop, theme, lock, wallpaper, and service contracts
Super+Space— open LumaSuper+P— open Luma password modeSuper+B— open Vigil quick settings on the focused outputSuper+L— lock through the shared session-lock lifecycleSuper+T— start TV mode
Vigil's control center is also available from the command line:
vigil control-center open
vigil control-center open --context notifications --output DP-5
vigil control-center close- Monitor layouts live in
hypr/monitor_layouts/,hypr/monitors.lua, andniri/outputs.kdl. Update connector names when hardware changes. scripts/awww_wallpapers.confmaps wallpapers to outputs.awww-daemon.serviceowns the sole wallpaper daemon;awww-wallpaper.serviceapplies images and follows output changes.- Matugen writes generated palettes to ignored runtime paths. Run
matugen image <wallpaper> -c ~/.config/matugen/config.tomlto refresh them. scripts/session_lock.shcloses transient Vigil UI, refreshes lock-safe context, and usesswaylockonly as an emergency fallback.- Vigil owns
org.freedesktop.Notifications; normal notification clients such asnotify-sendcontinue to work. - Set
AUTO_ENABLE_SPOTIFY_SERVICE=0while running setup to skip the optional Bluetooth Spotify service. - Set
CODEX_SELF_IMPROVE_DISABLED=1to disable login-time self-improvement orCODEX_SELF_IMPROVE_AUTO_COMMIT=0to retain successful changes without committing them.
bash -n setup.sh scripts/*.sh hypr/scripts/modes/*.sh
for test_file in tests/*.sh scripts/tests/*.sh; do bash "$test_file"; done
niri validate -c niri/config.kdl
Hyprland --config hypr/hyprland-config/desktop.conf --verify-config
Hyprland --config hypr/hyprland-config/laptop.conf --verify-config
cargo test --manifest-path tools/bar/Cargo.toml
cargo test --manifest-path tools/launcher/Cargo.toml
cargo test --manifest-path tools/tv-mode/Cargo.tomlVisible changes should also be checked with screenshots on the primary and reduced outputs. Long-session changes should verify that Vigil retains one audio subscriber and that awww owns one wallpaper layer per output.
No explicit license has been provided. Treat the contents as personal reference unless you have permission to reuse them.