#16092

Idle service stops detecting idle after hot-reloading idle settings in shell.json

Openphenriksenopened 1d ago

Changing idle.screensaver / idle.lock in ~/.config/omarchy/shell.json while the shell is running hot-reloads the new values (confirmed via omarchy-shell idle status) but the IdleMonitor stops firing entirely — no blank, no lock, ever again. Only omarchy restart shell recovers it.

Steps to reproduce

  1. Have working idle timeouts (e.g. stock 150/300) — idle cycles fire normally
  2. Edit shell.json to change idle.screensaver/idle.lock (values hot-reload fine)
  3. Wait well past the new timeout — nothing happens; journal shows zero omarchy idle events after the change
  4. omarchy restart shell — idle detection works again immediately

Evidence from journal (Oct 20)

18:13:33 idle-cycle-start: screensaver=150 lock=300   <- working with old values
18:16:03 lock-system: lock-timeout                    <- last successful lock
[shell.json saved at 18:19 with screensaver=900 lock=1800]
[no idle events for ~2 hours afterward]

During the dead period, omarchy-shell idle status confirmed the new values were loaded and the service was enabled:

{"enabled":true,"stayAwake":false,"screensaver":900,"lock":1800,...}

After omarchy restart shell, idle was detected within seconds and the screensaver launched correctly.

Suspect

The IdleMonitor (quickshell 0.3.2) may not re-register with the compositor when its timeout property changes. plugins/services/idle/Service.qml binds timeout to firstIdleTimeoutSeconds, which updates on hot-reload, but the compositor-side idle notification may not follow. Fresh shell startup (registering once with the final timeout) always works.

Workaround

Restart the shell after any idle-settings change: omarchy restart shell

System

  • Omarchy 4.0.6-1
  • Hyprland 0.56.2
  • quickshell 0.3.2.r7.g2b4501a-1
  • Kernel 7.2.8-9-omarchy, x86_64
  • Lenovo ThinkPad T430s (Intel Core i5-3320M, Ivy Bridge)

Activity

0

No activity yet.