server-desktop-01/CLAUDE.md

55 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` — 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 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)