#1 Le 10/01/2011, à 15:25
- Martopioche
[Résolu] Notifier un utilisateur indépendament du desktop manager
Bonjour,
Une petite question un petit peu roots sur l'utilisation des notifications avec notify-send. Ok, ça marche bien, mais j'ai besoin de notifier un utilisateur sur X qui n'est pas celui qui exécute le script. J'avais ainsi trouvé ce type de code :
pid=`pgrep -u monUser nautilus`
valDbus=`grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ | sed -e 's/DBUS_SESSION_BUS_ADDRESS=//'`
sudo -u monUser DBUS_SESSION_BUS_ADDRESS=$valDbus notify-send "Gotcha" "Arrête de trainer sur ubuntu-fr et retourne bosser"
Ça, ça marche, pas de soucis. Mais ça ne marche que pour Gnome (pgrep nautilus). Quelqu'un sait-il comment être indépendant du desktop manager et donc notifier à minima un utilisateur KDE ?
Et question subsidiaire : notify-send est il le choix le plus adapté à KDE ?
Dernière modification par Martopioche (Le 14/01/2011, à 11:01)
Hors ligne
#2 Le 10/01/2011, à 17:24
- chopinhauer
Re : [Résolu] Notifier un utilisateur indépendament du desktop manager
Pour les applications qui ne savent pas récupérer l'adresse du bus D-Bus autrement, cette valeur est sauvegardée dans le répertoire ~/.dbus dans un fichier nommé <uuid machine>-<n. serveur X>. Le <uuid machine> est sauvegardé dans /var/lib/dbus/machine-id. Ainsi :
user=toto
home_user=`getent passwd $user | cut -d: -f6`
machine_id=`cat /var/lib/dbus/machine-id`
file="${home_user}/.dbus/${machine_id}-0"
dbus_addr=`grep ADDRESS= "$file" | cut -d= -f2-`
te permettra de retrouver l'adresse du bus.
KDE devrait aussi utiliser le même service D-Bus pour les notifications.
Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.
Hors ligne
#3 Le 10/01/2011, à 22:43
- Martopioche
Re : [Résolu] Notifier un utilisateur indépendament du desktop manager
Merci pour la réponse, intéressante, et merci d'avoir détaillé.
Cependant, mon problème n'est pas d'accéder à l'adresse dBus, mais d'identifier quel utilisateur a un X actif. Tu va peut être me répondre que si l'utilisateur n'est pas sous environnement fenêtré, alors il n'a pas ce fichier, mais est-ce fiable ? Pour aller plus loin, on pourrai dire qu'il n'est pas possible d'identifier sous quel environnement il est afin d'adapter la réponse (notify-send sous gnome, kdialog sous KDE...)...
Hors ligne
#4 Le 10/01/2011, à 23:25
- chopinhauer
Re : [Résolu] Notifier un utilisateur indépendament du desktop manager
ConsoleKit répondra à ta première question : c'est comme l'ancienne base de données utmp/wtmp de utilisateurs connectés, mais plus détaillée. Regarde par exemple la sortie de ck-list-sessions.
Pour distinguer le type de session, je crains que la manière plus fiable serait de vérifier la présence d'un certain gestionnaire de session sur le bus D-Bus. Le gestionnaire ksmserver enregistre le nom org.kde.ksmserver, tandis que gnome-session le nom org.gnome.SessionManager. Un utilisateur pourrait avoir deux sessions au même temps, donc vérifier juste la présence de ces deux processus serait moins fiable.
Cependant je ne pense pas que tu dois distinguer les deux cas : l'interface org.freedesktop.Notifications (utilisée par notifiy-send) est commune aux deux environnement et kdialog n'est pas vraiment l'équivalent KDE de notify-send, mais plutôt celui de zenity.
Dernière modification par chopinhauer (Le 10/01/2011, à 23:26)
Pensez à donner un bon titre à vos sujets : cela permettra d'aider d'autres utilisateurs dans votre même situation. Ce n'est pas qu'en donnant des solutions qu'on aide, mais aussi en posant des bonnes questions et… facilement trouvables.
Hors ligne
#5 Le 14/01/2011, à 11:02
- Martopioche
Re : [Résolu] Notifier un utilisateur indépendament du desktop manager
Merci pour ces informations. Ce n'est pas une réponse directe mais de bonnes pistes pour mon idée et qui en ouvrent d'autres Je diffuserai résultat ou tuto ici ou ailleurs
Hors ligne