Modular Wayland desktop dotfiles centered on Quickshell with Hyprland and Niri, managed via GNU Stow.
20251016_154132.mp4
- Symlink into $HOME with Stow:
- Core:
stow -t ~ home config quickshell hypr niri fish nvim kitty mpv bin - Optional:
stow -t ~ ghostty alacritty foot wezterm nushell
- Core:
- Remove:
stow -D -t ~ <package> - Test Quickshell:
quickshell(check logs for=== MainService System Info ===). - Sessions: Hyprland and Niri autostart Quickshell.
- Core: quickshell, hypr, niri, fish, kitty
- Shells: fish (primary), nushell, bash
- Terminals: kitty (primary), ghostty, alacritty, foot, wezterm
- UI: Quickshell handles shell, notifications, OSD, lockscreen
- Idle/Lock: hypridle/hyprlock (Hyprland), swayidle (Niri)
- Media: mpv
- Bin: local utility scripts
- Required: quickshell, hyprland or niri, fish, kitty, xdg-terminal-exec, pacman-contrib, gpu-screen-recorder, jq, nmcli, xrandr, libnotify
- Optional: hypridle, hyprlock, swayidle, hyprshot, satty, ghostty, alacritty, nvim, mpv, zen-browser
Adjust package names for your distro.
- Battery monitoring & indicator
- Audio (input/output control)
- Media player controls (MPRIS)
- System info monitoring (CPU, Memory, Disk)
- Monitor management (hotplug, layout, resolution, HDR, VRR)
- Keyboard layout switching & indicator
- Display brightness control
- Keyboard backlight control
- Power management (PPD / TLP profiles)
- Workspace management (Hyprland/Niri support)
- Active window tracking & display
- Multi-monitor support
- Notification system (FreeDesktop spec)
- System tray (StatusNotifier protocol)
- App launcher
- [/] Clipboard management
- IPC command system
- Polkit authentication dialog
- Lock screen (WlSessionLock)
- Idle management & inhibit
- Privacy indicators (mic/camera/screenshare)
- Network manager (WiFi/Ethernet, inline connections)
- Bluetooth manager
- Wallpaper management (per-monitor, animated transitions)
- Screen recording (gpu-screen-recorder)
- OSD (on-screen display) system
- Audio visualizer (cava)
- Input display overlay (keyboard/mouse key display)
- Power menu
- Package updates (Arch/pacman, notifies by package name)
- Time & date display
- Weather information
- DND mutes third-party audio streams
- Power menu button
- Update checker (Arch)
- Idle inhibitor toggle
- Keyboard layout indicator
- Battery indicator with PPD profile (laptop)
- App launcher button
- Wallpaper picker button
- Workspace indicators (Normal & Special)
- Active window title
- Privacy indicators
- Volume control with panel
- Screen recorder controls
- Network indicator with panel
- Bluetooth indicator with panel
- System tray
- Date & time with calendar
- Media player widget (MPRIS controls)
- System info widget (CPU, Memory, Disk)
- Notification popup (actions, images, inline reply, grouping)
- Notification center (DND, history, weather forecast)
- OSD overlay (volume, brightness, etc.)
- Audio panel (devices, streams)
- Network panel (WiFi networks, inline connections)
- Bluetooth panel (devices, pairing)
- Lock screen (per-monitor wallpapers)
- App launcher (grid view, search)
- Wallpaper picker (per-monitor, transitions)
- Idle settings panel
- Input display overlay (draggable)
- Theme (responsive scaling, colors, ultrawide support)
- IconButton component
- Tooltip system
- Panel framework
- Input components
- Toggle components
- hyprlock and swaylock are no longer included; Quickshell provides the lock screen.
- Default terminal via
xdg-terminal-execis easier for me to swap in all the system.
Grateful for Linux/Hyprland/Niri/Quickshell projects and rest of community, learned alot from various existing shells, including: