[2026-10-11] eagle: family/how-to/htpc-system.md

This commit is contained in:
Alexey Martemyanov committed 2026-10-11 14:52:10 +06:00
1 parent d6392fcb4f
commit f5e6c811fd
1 file changed
+6 -4
+6 -4
View File
@@ -128,13 +128,15 @@ Sleep управляется `htpc-sleep-guard` — Python-скрипт + system
| `htpc-sleep-guard` | **active/enabled** | актуальный guard (SSH + торренты + rsync-файл) |
| `transmission-sleep-guard` | disabled | старый, отключён (дублировал и держал ингибитор постоянно) |
### Редизайн guard — nudge вместо ингибитора (план 2026-10-11)
### Редизайн guard — nudge вместо ингибитора (задеплоен 2026-10-11 14:51)
**Инцидент 2026-10-11 14:10:** guard (правка 08.10 в рамках virfield) сам вызвал suspend через 30 мин после отпускания удержания — во время игровой сессии. Игровая активность в условиях guard не проверяется (только SSH/торренты/rsync-файл/чужие block-ингибиторы, которых gamescope не ставит).
**Инцидент 2026-10-11 14:10:** guard (правка 08.10 в рамках virfield) сам вызвал suspend через 30 мин после отпускания удержания — во время игровой сессии. Игровая активность в условиях guard не проверялась (SSH/торренты/rsync-файл/чужие block-ингибиторы, которых gamescope не ставит).
**Новый дизайн:** Steam (`-steamdeck`, gamescope) — единственный инициатор сна, его idle-таймер нативно уважает геймпад/игру (доказано 28.05 и инцидентом — за 1ч игры Steam не усыпил). Guard больше НЕ ставит systemd-inhibit и НЕ вызывает suspend. Пока выполняются условия удержания (SSH-сессия / дневные торренты+cooldown / `/tmp/rsync-active`) — guard каждые 60 с шлёт синтетический input (`xdotool key F13` на дисплей gamescope-сессии), сбрасывая idle-таймер Steam. Условия кончились → nudge прекращён → Steam сам усыпляет по своему таймауту. Ночь (23–11): без nudge даже с торрентами + RTC-wake 11:00 (как раньше).
**Дизайн (активен):** Steam (`-steamdeck`, gamescope) — единственный инициатор сна; его idle-таймер нативно уважает геймпад/игру. Guard НЕ ставит systemd-inhibit и НЕ вызывает suspend. Пока выполняются условия удержания (SSH-сессия / дневные торренты+15-мин cooldown / `/tmp/rsync-active`) — guard каждые 60 с шлёт nudge: `xdotool mousemove_relative ±1px` на дисплей сессии (Steam PID → DISPLAY/XAUTHORITY; канал XTest в Xwayland — тот же, что у magic4pc, доказано), fallback — `key F13`. Условия кончились → nudge прекращается → Steam сам усыпляет по своему таймауту. Ночь (23–11): без nudge даже с торрентами + RTC-wake 11:00 (NOPASSWD rtcwake на месте).
**Риски:** Steam-таймер может не смотреть X-keyboard → fallback uinput-геймпад; Sleep After=Never → таймер не выстрелит (проверить конфиг); XTest в gamescope-сессии (проверить живьём).
**Живой запуск 14:51:09:** `started (nudge design)` → `[nudge] start: Active SSH session` → `[nudge] xdotool OK`; ингибиторов guard не ставит. Бэкап: `~/htpc-sleep-guard.py.bak-20261011` (предыдущая версия — `.bak-20261008`).
**Питфолы:** Xwayland в gamescope не поддерживает MIT-SCREEN-SAVER — X-idle замерить нельзя (всегда 0), проверка только поведенческая (машина не спит при nudge); ctypes-XSSI без restype=c_void_p сегфолтит.
### Логика guard (до 2026-10-11, заменяется)