# Hyprland Desktop Environment The Hyprland setup is the primary desktop environment — a Wayland compositor with a full ecosystem of bars, launchers, notification daemons, and theming tools. --- ## Overview | Component | Role | |-----------|------| | **Hyprland** | Wayland tiling compositor (dwindle layout) | | **Kitty** | Primary terminal emulator | | **EWW** | Status bar (three device variants) | | **Waybar** | Alternative status bar | | **Wofi** | App launcher (keyboard-driven) | | **Walker** | Fast CLI launcher | | **uLauncher** | GUI app launcher | | **Dunst** | Notification daemon | | **Hyprlock** | Screen locker | | **Hyprpaper** | Wallpaper daemon | | **Hypridle** | Idle management (sleep, lock) | | **nwg-dock** | Application dock | | **nwg-drawer** | Application drawer | | **nwg-panel** | Desktop menu | | **Vicinae** | Gesture-triggered context launcher | | **ly** | TUI login manager | --- ## Config File Map ``` desktopenvs/hyprland/ ├── hypr/ │ ├── hyprland.conf # Root config — imports all below │ ├── hyprtoolkit.conf # Toolkit utilities │ ├── hyprlock.conf # Lock screen │ ├── hypridle.conf # Idle timeouts │ └── hyprpaper.conf # Wallpaper ├── hypr-usr/ # Per-user override layer │ ├── binds.conf # All keybindings │ ├── input.conf # Keyboard/mouse settings │ ├── monitors.conf # Display layout │ ├── windowrules.conf # Per-app behaviour rules │ └── autostart.conf # Startup programs ├── kitty/ │ ├── kitty.conf # Terminal config │ ├── current-theme.conf # Active palette (CyberQueer) │ └── themes/cyberqueer.conf # Theme definition ├── waybar/ │ ├── config # Module layout and data sources │ └── style.css # CyberQueer styling ├── wofi/style.css # Launcher styling ├── walker/themes/ # Walker theme (cyberqueer.css) ├── dunst/ # Notification styling ├── eww/ # EWW bar (PC — no battery) ├── eww-nobattery/ # EWW bar alias ├── eww-touch/ # EWW bar (tablet / touchscreen) ├── spicetify/ # Spotify CyberQueer themes ├── Vencord/ # Discord CyberQueer themes ├── btop/ # System monitor + cyberqueer.theme ├── scripts/ # 20+ utility scripts └── config-updater/ # Config synchronisation tool ``` --- ## Keybindings All bindings live in `hypr-usr/binds.conf`. ### Applications | Binding | Action | |---------|--------| | `Super + T` | Kitty terminal | | `Super + Shift + T` | Cool Retro Term (CRT profile) | | `Super + M` | Micro editor | | `Super + E` | Thunar file manager | | `Super + X` | Wofi app launcher | | `Super + F` | File search (wofi) | | `Super + Shift + F` | Folder search (wofi) | ### Window Management | Binding | Action | |---------|--------| | `Super + Q` | Close focused window | | `Super + V` | Toggle floating | | `Super + Shift + V` | Centre floating window | | `Super + P` | Toggle pseudo-tiling | | `Super + J` | Toggle split direction | | `Super + Arrow / hjkl` | Focus window by direction | | `Super + Shift + Arrow / hjkl` | Move window by direction | | `Super + [0-9]` | Switch workspace | | `Super + Shift + [0-9]` | Move window to workspace | | `Super + mouse drag` | Move/resize floating window | ### System | Binding | Action | |---------|--------| | `Super + O` | Lock screen (hyprlock) | | `Super + Alt + O` | Power menu | | `Super + Ctrl + O` | Shutdown immediately | | `Super + Z` | Toggle EWW bar | | `Super + Ctrl + P` | Start screen recording | ### Touchpad Gestures | Gesture | Action | |---------|--------| | 3-finger swipe left/right | Switch workspace | | 3-finger swipe up/down | Move window to workspace | | 3-finger pinch | Toggle overview | | 4-finger tap | Open launcher | --- ## Status Bar (EWW) EWW (Elkowar's Wayland Window Manager) is compiled from source during Hyprland install and comes in three variants: | Variant | Device | Battery Widget | |---------|--------|---------------| | `eww/` | Desktop PC | No | | `eww-nobattery/` | Desktop PC | No | | `eww-touch/` | Laptop / tablet | Yes | During install the EWW installer asks which variant to use. ### Waybar An alternative to EWW — always installed. The bar layout: - **Left**: clock, disk usage, RAM, CPU, temperature - **Centre**: workspace switcher, active window title - **Right**: network speed, IP address, system tray, audio volume, battery (if present) --- ## Launchers ### Wofi Keyboard-driven app/file launcher. Activated with `Super + X`. Config: `wofi/style.css` — themed with CyberQueer colours. ### Walker Fast CLI launcher (`walker`). Pre-configured with `walker/config.toml` and the `cyberqueer.css` / `cyberqueer.toml` theme files. ### uLauncher GUI launcher with plugin support. Theme: `ulauncher/user-themes/cyberqueer/`. Colours in the theme are colour-substitution targets (updated by `apply-theme.sh`). --- ## Notification Daemon (Dunst) Lightweight notification daemon. Config in `dunst/dunstrc`. Notifications appear top-right with CyberQueer styling. --- ## Lock Screen (Hyprlock) `hyprlock` is the Wayland screen locker. Config at `hypr/hyprlock.conf`. Activated by `Super + O` or automatically via `hypridle` after idle timeout. --- ## Scripts Reference All scripts live in `desktopenvs/hyprland/scripts/` and are deployed to `~/.config/scripts/`. | Script | Purpose | |--------|---------| | `caffeine.sh` | Toggle hypridle (prevent sleep) | | `ewwstart.sh` | Launch EWW bar on startup | | `ewwstart-niri.sh` | EWW for niri compositor variant | | `togglebar.sh` | Show/hide EWW bar (monitor-aware) | | `helpmenu.sh` | Display keybindings from binds.conf | | `screenshot.sh` | Region/full screenshot via grim + slurp | | `screenrec.sh` | Screen recording | | `screenrotationacw.sh` | Rotate screen anti-clockwise (tablet) | | `screenrotationwcw.sh` | Rotate screen clockwise (tablet) | | `unified-rotate.sh` | Unified rotation handler | | `hyprland-toggle-touchpad.sh` | Enable/disable touchpad | | `wofi-file-search.sh` | File search via wofi | | `foldersearch.sh` | Folder search via wofi | | `pwr-dmenu.sh` | Power menu (shutdown/reboot/suspend) | | `caffeine.sh` | Toggle idle inhibitor | | `getispeed.sh` | Internet speed test display | | `journal.sh` | Quick journal entry | | `date.sh` / `time.sh` | Date/time waybar helpers | | `uptime.sh` | Uptime display | | `dysk-phydisks.sh` | Physical disk info (dysk) | | `drawer.sh` | Open nwg-drawer | | `menu.sh` | Application menu | | `onscreenkb.sh` | On-screen keyboard (wvkbd) | | `bluetooth-applet.sh` | Bluetooth UI wrapper | | `togglewinbars.sh` | Toggle window title bars | | `toggle-layout.sh` | Switch tiling layout | | `playpause.sh` | Media play/pause | | `calender-fix.sh` | Calendar waybar widget fix | --- ## Application Theming ### Spotify (Spicetify) Two CyberQueer Spicetify themes are available: | Theme | Style | |-------|-------| | `cli-cyberqueer` | CLI-inspired, minimal | | `matte-cyberqueer` | Matte finish variant | Applied automatically when the `spotify` module is installed. ### Discord (Vencord) Two Discord themes: | Theme | Location | |-------|----------| | `cyberqueer.theme.css` | Standalone CyberQueer theme | | `system24/…/cyberqueer.theme.css` | system24 framework with CyberQueer colours | ### Terminal (Kitty) The `kitty/themes/cyberqueer.conf` file defines the full 16-colour palette mapped to CyberQueer values. It is sourced by `current-theme.conf` which is imported in `kitty.conf`. --- ## Login Manager (ly) `ly` is a TUI display manager configured via `etc-ly-config.ini` (deployed to `/etc/ly/config.ini`). Its colours are tracked by `apply-theme.sh` (system file, applied via `sudo`). --- ## Installing Hyprland ```bash # Via the TUI installer bash ~/Dotfiles/setup/tui-install.sh # → Select "shell" and "Hyprland" in the dialogs # On an existing system bash ~/Dotfiles/setup/install-modules.sh # → Not available; Hyprland is a base DE, use the full installer # Direct script bash ~/Dotfiles/setup/modules/Desktop-Environments/hyprland.sh ``` The install script compiles EWW from source (requires Rust), copies all configs, installs the GTK and cursor themes, enables `ly@tty1`, and configures `greetd`.