Existe-t-il un moyen d'afficher les messages muraux aux utilisateurs de bureau?

9

Disons que je suis loin de chez moi, ssh-ing sur mon ordinateur personnel. Pour une raison quelconque, j'ai besoin qu'il soit redémarré.

# shutdown -r +10

Cela envoie un message d'avertissement toutes les minutes via wall, qui est complètement invisible pour une utilisation normale du bureau par, disons, mes parents.

Existe-t-il un moyen pour que les wallmessages parviennent au bureau via, disons, une notification.

badp
la source
1
Grâce aux informations contenues dans les réponses à ce post, j'ai pu pirater ensemble un programme Python qui fait exactement ce dont j'avais besoin. Cela dépend du libnotify-binpaquet.
badp

Réponses:

8

Les éléments internes de wallet sont tellement bloqués et anciens qu'il n'y a vraiment aucun moyen d'en tirer le message une fois qu'il est là-dedans.

La seule vraie idée avancée pour cela ( le problème a été discuté plusieurs fois auparavant ) est de modifier les scripts shutdownet rebootafin qu'ils rendent quelque chose disponible via dbus ou (comme nous ne traitons qu'avec un ordinateur et un correctif) vous pourriez il suffit de lui envoyer un message de notification-envoi.

Ce ne sont que des scripts pour que vous puissiez les pirater. Mais je pense que c'est probablement une cause à défendre. Soumettez un bogue contre Ubuntu et ajoutez vos correctifs (assurez-vous simplement qu'ils peuvent fonctionner sans avoir besoin d'envoyer la notification s'il n'y a pas d'environnement X). C'est ce genre d'utilisation dont nous avons besoin.

Je n'en ai jamais entendu parler gxmessageauparavant, mais j'utiliserais notify-send.

Une solution complète devrait prendre en compte la possibilité d'affichages multiples (par exemple multi-têtes, utilisateurs distants, etc.) mais heureusement, j'ai écrit du code pour ce bit hier:

for display in `ps aux | grep -oE "/usr/bin/X\s[^ ]+" | cut -d " " -f 2`; do
    DISPLAY=$display notify-send -u critical 'Shutdown notice' 'Save all your work. THE SYSTEM IS GOING DOWN!!' -i /usr/share/pixmaps/gnome-computer.png
done

(J'utilise l'exportation au lieu d'un indicateur -displayou --displayparce que je ne sais pas si cela notify-sendprend non plus)

Oli
la source
gxmessage est une ancienne application. y penser dbus et notifier-envoyer est une bien meilleure option. Peut-être que je peux travailler quelque chose avec zénité.
étamé
Ouais, je ne sais pas ce qui est le mieux. zenityles avertissements peuvent être ennuyeux si vous vous efforcez de sauvegarder les choses avant de vous déconnecter ... Mais les notify-sendnotifications peuvent simplement être ignorées.
Oli
1
Il est vrai que la notification de notification-envoi peut être ignorée, mais si elle s'affiche une fois quelques fois (par exemple 10 minutes), elle pourrait faire le travail!
OpenNingia
@Oli J'ai trouvé que vous avez également besoin de la variable d'environnement XAUTHORITY correctement définie pour que cela fonctionne, cependant.
badp
1
DISPLAY=$display notify-send...exportera uniquement cette valeur de DISPLAY pour cette commande; ce n'est pas important ici, mais c'est utile ailleurs et, à mon humble avis, un peu plus propre.
2

Vous pouvez envoyer un message manuellement en utilisant zenity

zenity --warning --text "badp's about to restart the computer" --display=:0

Bien sûr, vous pouvez l'inclure dans un script.

misterben
la source
Je ne peux pas ouvrir l'écran, même en tant que superutilisateur (je dois sudo en tant que bon utilisateur) :(
badp
Devrait être en mesure de - bien sûr, vous avez le côlon là-dedans ( =:0pas =0)
misterben
n'a pas pu, vous avez également besoin que la variable d'environnement XAUTHORITY soit correctement définie.
badp
1

Vous devriez pouvoir écrire un script qui crée un ptty et écoute les messages écrits (d'écriture ou de mur), puis les transmet à une sortie GUI.

singpolyma
la source
0

AFAIK il n'y a pas de client X pour la commande wall pour afficher ces messages dans un environnement graphique. Vous pouvez utiliser l' application gxmessage pour afficher des fenêtres contextuelles, mais vous devrez ensuite écrire le script vous-même.

étamé
la source