fix(suspend): restart keyboard shortcut backend after resume (#371)

After suspend/resume, evdev devices disconnect and the monitor thread
exits when all file descriptors close. The resume handler only
reinitialized the speech engine, leaving keyboard shortcuts dead.

Restart _setup_keyboard_shortcuts() in _reinit_after_resume() to
re-scan /dev/input and open fresh device file descriptors.
This commit is contained in:
Jatin K Malik
2026-03-29 23:21:55 -07:00
committed by GitHub
parent 4d501f1711
commit 5909def48d
2 changed files with 62 additions and 0 deletions
+9
View File
@@ -476,6 +476,15 @@ class TrayIndicator:
self.speech_engine.reinitialize_after_resume()
except Exception:
logger.error("Failed to reinitialize after resume", exc_info=True)
# evdev devices disconnect on suspend; monitor thread exits when all fds close.
# Full stop+start re-scans /dev/input and opens fresh file descriptors.
try:
logger.info("Restarting keyboard shortcuts after resume")
self._setup_keyboard_shortcuts()
except Exception:
logger.error("Failed to restart keyboard shortcuts after resume", exc_info=True)
return GLib.SOURCE_REMOVE
def _on_quit_clicked(self, widget):