261 lines
8.4 KiB
Markdown
261 lines
8.4 KiB
Markdown
# 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`.
|