diff --git a/src/my_memory/app.py b/src/my_memory/app.py index 49f197d..6ee3ad9 100644 --- a/src/my_memory/app.py +++ b/src/my_memory/app.py @@ -2,9 +2,10 @@ from __future__ import annotations +import signal import sys -from PySide6.QtCore import QByteArray +from PySide6.QtCore import QByteArray, QTimer from PySide6.QtGui import QAction, QIcon from PySide6.QtNetwork import QLocalServer, QLocalSocket from PySide6.QtWidgets import QApplication, QMenu, QSystemTrayIcon @@ -141,4 +142,13 @@ class MyMemoryApp: def run(self) -> int: """Run the application event loop.""" self.setup_tray() + + # Let Python's SIGINT handler fire inside the Qt event loop. + # A zero-interval timer gives Python a chance to run signal handlers + # between Qt event loop iterations. + timer = QTimer() + timer.start(500) + timer.timeout.connect(lambda: None) + signal.signal(signal.SIGINT, lambda *_: self._quit()) + return self._app.exec()