Les notifications et le démon de notification ne fonctionnent pas sur le gestionnaire de windows

Les notifications ne fonctionnent pas sur les gestionnaires de windows autonomes Linux (Openbox, Awesome WM et similaires). J'ai essayé d'installer notification-daemon et dunst, mais l'envoi avec notify-send "something" ne fait pas de window pour pop-up.

J'ai essayé d'exécuter polkit-gnome-agent et d'exécuter directement des démons de notification, mais cela n'aide pas (alors que j'ai résolu un problème similaire de cette façon, mais maintenant il ne fait rien).

Il n'y a aucune indication d'erreur à less que j'aie envoyé une notification sortingviale avec python, alors je reçois seulement un message d'erreur vague: File "/usr/lib/python3.3/site-packages/gi/types.py", line 113, in function return info.invoke(*args, **kwargs) gi._glib.GError: Could not connect: Connection refused programme Trivial C ne produit rien (pas d'erreur par exemple).

J'utilise Archlinux avec systemd et d-bus, je soupçonne que c'est un problème avec polkit ou un démon genre qui ne fonctionne pas sur le démarrage du gestionnaire de windows, mais je n'ai aucune idée, comment puis-je essayer ou comment get des messages d'erreur plus significatifs.

EDIT: J'ai pris un exemple de code à partir de là: https://wiki.archlinux.org/index.php/Libnotify#Python

Dbus devrait être en cours d'exécution car systemd l'a comme dépendance. J'ai libnotify installé – c'est le package qui fournit le notify-send . De plus, le démon de notification doit commencer au besoin (uniquement lorsque la notification arrive), en suivant le file de bureau /usr/share/dbus-1/services/org.freedesktop.Notifications.service :

 [D-BUS Service] Name=org.freedesktop.Notifications Exec=/usr/bin/dunst 

J'avais même essayé d'exécuter des démons directement (juste exécuter) et essayé d'envoyer des notifications. Si Somenone sait comment je pourrais get plus d'informations, n'hésitez pas à suggérer.

EDIT 2: J'ai essayé d'exécuter le daemon de notification avec sudo: sudo notification-daemon_name & (dans mon cas sudo dunst & ) et sudo notify-send something , alors la notification fonctionne. Mais lorsque j'essaie de faire l'une des actions précédentes en tant qu'user non privilégié (ce qui est important, la plupart des programmes envoient des notifications en tant qu'users non privilégiés), rien ne s'affiche.

notification-daemon refuse de travailler du tout sans erreur ni avertissement.

EDIT 3: Il est clair que c'est un problème de permissions: je ne peux pas envoyer de notifications sans access root. Après redémarrage propre: sudo notify-send "something" fonctionne même sans lancer manuellement de démons, cependant ce que je (et mes programmes lancés) devrait faire pour pouvoir envoyer des notifications sans privilèges root comme cela est possible dans Gnome ou tout autre environnement de bureau complet ?

Finalement, j'ai résolu le problème moi-même.

Je vais laisser des instructions ce que j'ai fait.

Le problème se compose de deux parties:

  1. Dbus n'est pas accessible depuis Windows Manager
  2. Le démon de notification ne peut pas recevoir de messages de dbus

1ère solution de problème:

Le vrai problème était que mon gestionnaire de windows était exécuté à partir de lxdm, qui pour une raison quelconque ne fusionne pas les files de configuration de /etc/X11/xinit/xinitrc.d sauf pour la session lxde (dans LXDE dbus fonctionne, wm génial ne le fait pas) . Dans ce dossier existe un file nommé 30-dbus avec le contenu suivant:

 #!/bin/bash # launches a session dbus instance if [ -z "$DBUS_SESSION_BUS_ADDRESS" ] && type dbus-launch >/dev/null; then eval $(dbus-launch --sh-syntax --exit-with-session) fi 

Cette partie du code définit la variable $DBUS_SESSION_BUS_ADDRESS qui définit un port dbus à utiliser pour diverses applications. echo $DBUS_SESSION_BUS_ADDRESS peut être utilisé comme simple vérification de l' echo $DBUS_SESSION_BUS_ADDRESS pour voir si une session dbus existe (elle doit renvoyer le file de session dbus).

Les files de configuration de ce dossier peuvent être fusionnés avec un script shell simple au démarrage de la session (code extrait de .xinitrc ):

 #!/bin/bash if [ -d /etc/X11/xinit/xinitrc.d ]; then for f in /etc/X11/xinit/xinitrc.d/*; do [ -x "$f" ] && . "$f" done unset f fi 

2ème solution de problème:

Bien que dbus s'exécute et qu'il soit disponible pour d'autres programmes, il a besoin d'un plus grand nombre d'access pour que les notifications fonctionnent correctement. J'ai donc dû exécuter l'agent polkit, car Awesome WM n'en possède pas. J'avais choisi lxpolkit , parce que j'avais déjà un environnement lxde presque complet. Dans mon cas, juste ajouté à mon ~/.config/awesome/rc.lua : awful.util.spawn_with_shell("dex /etc/xdg/autostart/lxpolkit.desktop") , pour une raison quelconque, sans cette ligne, il a refusé de Commencez par défaut avec lxdm.

Je pense que l'agent de gnome polkit devrait bien fonctionner aussi.

Ce n'est pas une réponse, juste une grande clarification pour peut-être aider à générer la prochaine question.

Merci d'avoir ajouté les détails supplémentaires. Vous avez probablement un problème de permissions, mais malheureusement, il est probable que les permissions nécessaires pour se connecter à la socket de domaine DBus Unix.

Pour confirmer cette exécution comme non-root:

 $ strace -o /tmp/ns.out notify-send "why will this not connect" $ grep '^connect' /tmp/ns.out connect(4, {sa_family=AF_FILE, path=@"/tmp/dbus-6AIOJVWzCC"}, 23) = 0 

sauf que vous obtiendrez probablement quelque chose comme

 connect(…) = -1 ECONNREFUSED (Connection refused) 

Pourquoi? Je n'ai aucune idée. Je sais que le sous-système de notification a attiré beaucoup plus d'attention dans la communauté de développement de GNOME que je n'aurais jamais cru qu'une telle fonctionnalité superficielle devrait le faire. Je soupçonne un certain file de configuration dans les locations de configuration Zillion ou GTK, mais je sais que ce n'est pas trop utile.