Files
slic/start-notification-service.py
T
tligui_y 8a926cece3
Run CI Tests / test (push) Has been cancelled
Update start-notification-service.py
2025-08-16 15:26:59 +02:00

91 lines
2.7 KiB
Python

#!/usr/bin/env python3
from pydbus import SessionBus
from gi.repository import GLib
import sys
import signal
print("🔥 Démarrage du service de notifications", flush=True)
class Notifications:
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
def GetServerInformation(self):
return ("TestServer", "", "1.0", "1.2")
def GetCapabilities(self):
return ["body"]
try:
print("🔌 Connexion au bus...", flush=True)
bus = SessionBus()
print("📡 Publication du service...", flush=True)
bus.publish("org.freedesktop.Notifications", Notifications())
print("✅ Service prêt", flush=True)
# Timeout de sécurité
def quit():
print("⏳ Timeout atteint", flush=True)
loop.quit()
GLib.timeout_add_seconds(30, quit)
loop = GLib.MainLoop()
print("🔄 Démarrage de la boucle principale", flush=True)
loop.run()
except Exception as e:
print(f"💥 ERREUR: {type(e).__name__}: {str(e)}", flush=True)
sys.exit(1)