Gibt es eine Möglichkeit, Desktop-Benutzern Pinnwandnachrichten anzuzeigen?


9

Nehmen wir an, ich bin nicht zu Hause und ssh-sing auf meinem Heimcomputer. Aus irgendeinem Grund muss es neu gestartet werden.

# shutdown -r +10

Dies sendet jede Minute eine Warnmeldung über wall, die für die normale Desktop-Nutzung beispielsweise durch meine Eltern völlig unsichtbar ist.

Gibt es eine Möglichkeit, wie wallNachrichten beispielsweise über eine Benachrichtigung auf den Desktop gelangen können?


1
Dank Informationen in den Antworten zu diesem Beitrag, ich könnte hacken zusammen ein Python - Programm , das ist genau das, was ich brauchte. Das hängt vom libnotify-binPaket ab.
Badp

Antworten:


8

Die Interna von wallund sind so blockiert und uralt, dass es wirklich keine Möglichkeit gibt, die Nachricht daraus zu ziehen, wenn sie erst einmal da ist.

Die einzige wirkliche Idee, die hierfür vorgeschlagen wurde ( das Problem wurde bereits mehrfach diskutiert ), besteht darin, die Skripte shutdownund rebootSkripte so zu ändern, dass sie entweder etwas über dbus verfügbar machen oder (da es sich nur um einen Computer und einen Fix handelt) Lassen Sie es einfach eine Benachrichtigungs-Sende-Nachricht senden.

Sie sind nur Skripte, so dass Sie sich einfach in sie hacken können. Aber ich denke, das ist wahrscheinlich eine Sache, auf die es sich zu drängen lohnt. Senden Sie einen Fehler gegen Ubuntu und fügen Sie Ihre Patches hinzu (stellen Sie einfach sicher, dass sie funktionieren, ohne die Benachrichtigung senden zu müssen, wenn keine X-Umgebung vorhanden ist). Es ist diese Art von Benutzerfreundlichkeit, die wir brauchen.

Ich habe noch nie davon gehört gxmessage, aber ich würde verwenden notify-send.

Eine vollständige Lösung müsste die Möglichkeit mehrerer Anzeigen (z. B. Multi-Head, Remote-Benutzer usw.) berücksichtigen, aber zum Glück habe ich gestern einen Code für dieses Bit geschrieben:

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

(Ich verwende Export anstelle von -displayoder --displayFlag, weil ich nicht weiß, dass dies auch notify-senddauert.)


gxmessage ist eine alte App. dbus und notify-send ist eine viel bessere Option. Vielleicht kann ich etwas mit Zenität ausarbeiten.
Tinhed

Ja, ich bin mir nicht sicher, was am besten ist. zenityWarnungen können ärgerlich sein, wenn Sie versuchen, Dinge zu speichern, bevor Sie abgemeldet sind ... Aber notify-sendBenachrichtigungen werden möglicherweise einfach ignoriert.
Oli

1
Es ist wahr, dass Benachrichtigungs-Sende-Benachrichtigungen ignoriert werden können, aber wenn sie einmal angezeigt werden (z. B. 10 Minuten), erledigen sie möglicherweise den Job!
OpenNingia

@Oli Ich habe festgestellt, dass Sie auch die XAUTHORITY-Umgebungsvariable benötigen, die korrekt eingestellt ist, damit dies funktioniert.
Badp

1
DISPLAY=$display notify-send...exportiert nur diesen Wert von DISPLAY für diesen Befehl; nicht, dass es hier wichtig wäre, aber es ist anderswo nützlich und meiner Meinung nach ein bisschen sauberer.

2

Sie können eine Nachricht manuell mit zenity senden

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

Natürlich können Sie dies in ein Skript aufnehmen.


Ich kann das Display nicht öffnen, auch nicht als Superuser (ich muss als der richtige Benutzer sudo) :(
badp

Sollte in der Lage sein - sicher, dass Sie den Doppelpunkt dort haben ( =:0nicht =0)
Misterben

konnte nicht, müssen Sie auch die XAUTHORITY-Umgebungsvariable richtig eingestellt haben.
Badp

1

Sie sollten in der Lage sein, ein Skript zu schreiben, das eine Ptty erstellt und auf geschriebene Nachrichten (von Write oder Wall) wartet und diese dann an eine GUI-Ausgabe weiterleitet.


0

AFAIK Es gibt keinen X-Client für den Wandbefehl, um diese Nachricht in einer grafischen Umgebung anzuzeigen. Sie können die gxmessage- App zum Anzeigen von Popups verwenden, müssen das Skript jedoch selbst schreiben.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.