3.3 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
What this repo is
Documentation and planning for a GNOME → Hyprland migration on Fedora 43. No build system, no tests, no executables. The actual system configuration lives in ~/.dotfiles/ (separate Forgejo repo), managed with GNU Stow.
Key locations outside this repo
| What | Where |
|---|---|
| Hyprland config | ~/.dotfiles/hypr/.config/hypr/hyprland.conf |
| DMS source configs | ~/.dotfiles/hypr/.config/hypr/dms/ |
| Symlink target | ~/.config/hypr/ → symlinked via stow hypr |
| Hyprland log | ~/.cache/hyprland/hyprland.log |
| Dotfiles remote | git@forgejo.swansoncloud.com:jared/dotfiles.git |
| Synology DS218plus access + backup paths | docs/synology.md |
| VPS inventory + access notes | docs/vps-inventory.md |
Hyprland configuration
Installed version: 0.51.1 (Fedora 43). See docs/hyprland/version-history.md before applying patterns from the official wiki — the wiki tracks git HEAD, which is ahead of the installed version.
Window rule syntax for 0.48–0.51 (not the block syntax shown in current wiki):
windowrule = match:class classname, effect
windowrule = match:class classname, match:title titlepattern, effect1, effect2
Do NOT use ^(...)$ wrapping — Hyprland 0.51 rejects it as "Invalid rulev2". Use plain names or bare regexes (e.g. ^org\.gnome\. for a prefix match).
Block syntax (windowrule { }) is 0.52+ only — do not use until after a Fedora upgrade.
Docs structure
docs/window-manager/— migration plan, phased progress log, keybindings cheatsheetdocs/hyprland/— version-aware Hyprland config reference; update these when Hyprland is upgradeddocs/fedora-upgrade.md— distro release-upgrade procedure; F43→44 deferred (solopasha COPR aquamarine not rebuilt vs F44 libdisplay-info)docs/synology.md— DS218plus SSH alias,/volume1/backupmap, restic repo commands, recovery notesdocs/vps-inventory.md— OVH VPS (ovh-vps) access notes; old Hyperthrive DO VPS deleted 2026-06-24 (historical notes retained)docs/incidents.md— dated incident log (diagnosed-and-fixed issues): symptom, root cause, ruled-out, fix, follow-up
Project status
Phases 0–3 complete (install, config, dotfiles integration). Phase 4 (first successful Hyprland login and smoke tests) is in progress. Phase 5 (tuning) is deferred.
Known workarounds in place:
hyprpolkitagentreplaced withxfce-polkitdue to Qt 6.9/6.10 private ABI mismatch in solopasha COPR (affects hyprland-qt-support, hyprland-qtutils). Revisit when COPR rebuilds against Qt 6.10.- GDM Wayland→Hyprland cursor handoff leaves stale cursor ghost at login position. Fixed with
exec-once = sleep 1 && hyprctl dispatch movecursor 0 0in hyprland.conf. If unreliable, fallback isWaylandEnable=falsein /etc/gdm/custom.conf (makes GDM use X11 greeter for clean KMS handoff). cursor { no_hardware_cursors = true; use_cpu_buffer = 1 }set in dms/cursor.conf to prevent NVIDIA DRM (akmod-nvidia loaded for RTX 3060) from interfering with AMD Vega cursor plane rendering.
Hardware
- AMD Vega iGPU (primary display, Wayland)
- NVIDIA RTX 3060 dGPU (no display connected —
akmod-nvidiais installed and loadsnvidia_drmat boot)