Running log of decisions, actions, and findings as we migrate from GNOME to Hyprland on Fedora 43.
## 2026-04-17 — Decision + planning
**Decision: Hyprland + DankMaterialShell (DMS).**
Considered:
- **Sway** — most stable; already installed as fallback. Rejected as *primary* because community momentum has shifted to Hyprland/Niri, and user wants eye candy.
- **Niri** — too new for a "stable enough for daily use" pick.
- **Hyprland** — chosen. Mature enough for daily use, active community, the default people will be learning in 2028.
Shell:
- **DMS** chosen over **Noctalia**. Reasoning: first-party Fedora COPR, `dms setup` replaces waybar + swaylock + swayidle + mako + fuzzel + polkit in one package, lowest config burden for a new user. Noctalia is equally healthy but its plugin model and patched Quickshell fork add papercuts while still learning Hyprland itself. Revisit later.
GNOME and Sway stay installed as GDM fallback sessions.
- Only `nvidia-gpu-firmware` installed — no proprietary NVIDIA driver. Hyprland will run on the AMD path (the easy one). `prime-run` for dGPU later if needed.
**Research (summarized from agents):**
- Hyprland install path on Fedora: `solopasha/hyprland` COPR (not yet in official repos as of Jan 2026 knowledge cutoff — verify at install time).
- On first Hyprland login: config errors on all windowrule lines — "Invalid rulev2 found: match:class ^(...)$"
- Root cause: `^(...)$` wrapping was the old windowrulev2 regex format; Hyprland 0.51 explicitly rejects it even with the new `windowrule` keyword. Correct 0.51 syntax uses plain names or bare regexes with no outer grouping parens.
- Fixed all windowrule and layerrule patterns in hyprland.conf (stripped `^(...)$`; kept `^org\.gnome\.` prefix anchor without outer group).
- Updated docs: CLAUDE.md, docs/hyprland/version-history.md, docs/hyprland/window-rules.md all corrected to show actual 0.51 syntax.
- Noted: solopasha COPR still at 0.51.1 for Fedora 43; upstream latest is 0.54.0. Upgrade deferred until COPR catches up.