send remote notify-send message over ssh
Si tu veux afficher la notification sur le bureau Plasma de la machine distante, lance notify-send avec le bus D-Bus de la même session utilisateur :
1
ssh utilisateur@machine 'DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus notify-send "Titre" "Message"'
Ça fonctionne si cet utilisateur a une session Plasma ouverte. Par exemple, pour vérifier que le bus est là :
1
ssh utilisateur@machine 'ls -l /run/user/$(id -u)/bus'
Si ça ne suffit pas, connecte-toi dans un terminal Plasma sur la machine distante et vérifie l’adresse du bus avec echo "$DBUS_SESSION_BUS_ADDRESS" ; utilise cette valeur dans la commande SSH. notify-send doit joindre le bus de session où tourne Plasma, pas simplement démarrer dans le shell SSH.
Si tu voulais plutôt afficher la notification sur ta machine locale, c’est une autre configuration : il faut transférer le socket D-Bus local via SSH.
Ajoute --urgency=critical à la commande SSH précédente :
1
ssh utilisateur@machine 'DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus notify-send --urgency=critical "Titre" "Message persistant"'
Dans Plasma, les notifications d’urgence critical ignorent le délai d’expiration et restent affichées jusqu’à fermeture par l’utilisateur. Elles peuvent toutefois avoir un style plus insistant.
Oui. Dans les apostrophes simples de la commande SSH, un \n est transmis littéralement ; il ne devient pas automatiquement un retour à la ligne. Utilise plutôt $'...', qui interprète \n côté machine distante :
1
ssh utilisateur@machine 'DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus notify-send --urgency=critical "Titre" $'"'"'Première ligne\nDeuxième ligne'"'"
Plus simple à lire : passer le message comme argument séparé avec printf :
1
ssh utilisateur@machine 'printf "Première ligne\nDeuxième ligne" | { IFS= read -r -d "" msg || :; DBUS_SESSION_BUS_ADDRESS=unix:path/run/user/$(id -u)/bus notify-send --urgency=critical "Titre" "$msg"; }'
Ou, si tu écris le message dans un script distant, mets simplement un vrai retour à la ligne entre les deux lignes du texte.