INC-2026-04-07-002: Resolution

Resolution

Immediate Fix (Applied)

Recreated the env-gpu.conf symlink in the stow package:

ln -sf /home/evanusmodestus/atelier/_projects/personal/dots-quantum/hosts/razer/env-gpu.conf \
  ~/atelier/_projects/personal/dots-quantum/hyprland/.config/hypr/env-gpu.conf

Permanent Fix (Proposed)

Replace the symlink-based GPU config sourcing with hostname-based path resolution. This eliminates the per-machine symlink entirely.

Change hyprland.conf line 113:

- source = ~/.config/hypr/env-gpu.conf
+ source = ~/atelier/_projects/personal/dots-quantum/hosts/$HOST/env-gpu.conf

$HOST is set by zsh to the machine hostname (modestus-razer, modestus-p16g, etc.). Each machine sources its own GPU config automatically. No symlink to manage, no gitignore conflict, no deletion risk.

Requirements:

  • Each machine has hosts/<hostname>/env-gpu.conf in dots-quantum

  • Currently exists: hosts/razer/env-gpu.conf, hosts/p16g/env-gpu.conf

  • New machine: create hosts/<newhostname>/env-gpu.conf

  • Hostname dirs must match $HOST — verify with echo $HOST on each machine

Cleanup after applying:

# Remove the symlink from stow package (no longer needed)
rm ~/atelier/_projects/personal/dots-quantum/hyprland/.config/hypr/env-gpu.conf

# Remove the gitignore entry for env-gpu.conf
# Edit .gitignore and remove: hyprland/.config/hypr/env-gpu.conf

# Commit the hyprland.conf change
cd ~/atelier/_projects/personal/dots-quantum
git add hyprland/.config/hypr/hyprland.conf .gitignore
git commit -m "fix(hyprland): Source env-gpu.conf by hostname — eliminates per-machine symlink

Replace source = ~/.config/hypr/env-gpu.conf with hostname-based path:
source = ~/...dots-quantum/hosts/\$HOST/env-gpu.conf

Root cause of INC-2026-04-07-002: commit 64253e7 deleted the symlink
from git, which removed it from the stow-deployed config. Without GPU
env vars, Hyprland initialized in degraded mode where USB HID input
devices (built-in keyboard) did not function.

Ref: INC-2026-04-07-002"

Secondary Fix: Waybar Slow Startup

hyprland.conf exec-once lines reference swww-daemon and a wallpaper cycle script. If swww is not installed, these hang and delay waybar and other startup processes.

Options:

  1. Install swww on all machines: sudo pacman -S swww

  2. Comment out the swww lines in hyprland.conf if not needed

  3. Background the wallpaper script: add & to prevent blocking

Collateral Fixes Applied During Investigation

These were necessary fixes discovered during investigation but were not the root cause:

# User was not in input group (needed for device access)
sudo usermod -aG input evanusmodestus

# openrazer udev rule overrides input group on Razer devices
sudo tee /etc/udev/rules.d/99-openrazer-input-fix.rules << 'EOF'
SUBSYSTEM=="input", ATTRS{idVendor}=="1532", GROUP="input", MODE="0660"
EOF

Diagnostic Commands Reference

# === FIRST: Does the sourced file exist? ===
ls -la ~/.config/hypr/env-gpu.conf
cat ~/.config/hypr/env-gpu.conf | head -3

# === Is ~/.config/hypr a real dir or stow symlink? ===
ls -ld ~/.config/hypr
file ~/.config/hypr

# === What did git change in the hyprland package? ===
git -C ~/atelier/_projects/personal/dots-quantum diff <good-commit>..HEAD -- hyprland/

# === What is the stow package state? ===
ls -la ~/atelier/_projects/personal/dots-quantum/hyprland/.config/hypr/

# === Does Hyprland see keyboards? ===
export HYPRLAND_INSTANCE_SIGNATURE=$(ls /run/user/1000/hypr/ | sort | tail -1)
hyprctl devices | grep -A5 keyboard

# === GPU env vars in compositor process ===
cat /proc/$(pgrep -o Hyprland)/environ | tr '\0' '\n' | grep -E 'GBM|GLX|LIBVA|PRIME|WLR'

# === Hyprland source errors ===
# Visible in startup output or hyprland.log:
# "source= globbing error: found no match"

# === Device permissions ===
ls -la /dev/input/event*
stat -c "%G" /dev/input/event{4,5,6}