server-desktop-01/CLAUDE.md

3.0 KiB
Raw Blame History

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.480.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 cheatsheet
  • docs/hyprland/ — version-aware Hyprland config reference; update these when Hyprland is upgraded
  • docs/synology.md — DS218plus SSH alias, /volume1/backup map, restic repo commands, recovery notes
  • docs/vps-inventory.md — VPS SSH aliases, Hyperthrive DO recovery notes, OVH target notes

Project status

Phases 03 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:

  • hyprpolkitagent replaced with xfce-polkit due 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 0 in hyprland.conf. If unreliable, fallback is WaylandEnable=false in /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-nvidia is installed and loads nvidia_drm at boot)