diff --git a/start-notification-service.py b/start-notification-service.py index 736b4a546..313472401 100644 --- a/start-notification-service.py +++ b/start-notification-service.py @@ -7,7 +7,56 @@ import signal print("🔥 Démarrage du service de notifications", flush=True) class Notifications: - def Notify(self, app_name, *args): + def Notify(self, app_name, *args):#!/usr/bin/env python3 +import sys +import signal +from pydbus import SessionBus +from gi.repository import GLib + +print("🔔 Initialisation du service de notifications", flush=True) + +class NotificationService: + def Notify(self, app_name, replaces_id, app_icon, summary, body, actions, hints, timeout): + """Méthode requise avec signature EXACTE""" + print(f"📩 Notification reçue : {app_name} - {summary}", flush=True) + return 1 # Doit retourner un uint32 + + def GetServerInformation(self): + return ("CustomServer", "YourOrg", "1.0", "1.2") + + def GetCapabilities(self): + return ["body", "actions"] + +def main(): + try: + print("🚦 Connexion au bus session D-Bus...", flush=True) + bus = SessionBus() + + print("📡 Enregistrement du service...", flush=True) + bus.publish("org.freedesktop.Notifications", NotificationService()) + + # Configuration des signaux + def quit_handler(*args): + print("\n🛑 Signal reçu, arrêt propre...", flush=True) + loop.quit() + + signal.signal(signal.SIGINT, quit_handler) + signal.signal(signal.SIGTERM, quit_handler) + + # Timeout de sécurité + GLib.timeout_add_seconds(30, lambda: (print("⏱️ Timeout atteint", flush=True), loop.quit(), False)) + + print("✅ Service prêt | PID:", os.getpid(), flush=True) + loop = GLib.MainLoop() + loop.run() + + except Exception as e: + print(f"💥 ERREUR CRITIQUE: {type(e).__name__}: {str(e)}", file=sys.stderr, flush=True) + sys.exit(1) + +if __name__ == "__main__": + import os + main() print(f"📨 Notification de '{app_name}' reçue", flush=True) return 1 # Doit retourner un uint32