Czy istnieje sposób wyświetlania wiadomości na ścianie użytkownikom komputerów stacjonarnych?

9

Powiedzmy, że nie ma mnie w domu, ssh-shing na moim domowym komputerze. Z jakiegokolwiek powodu potrzebuję ponownego uruchomienia.

# shutdown -r +10

To wysyła komunikat ostrzegawczy co minutę wall, który jest całkowicie niewidoczny dla normalnego użytkowania pulpitu przez, powiedzmy, moich rodziców.

Czy istnieje jakiś sposób, aby wallwiadomości mogły dotrzeć na pulpit za pośrednictwem, powiedzmy, powiadomienia?

badp
źródło
1
Dzięki informacjom zawartym w odpowiedziach na ten post mogłem zhakować program Python, który robi dokładnie to, czego potrzebowałem. To zależy od libnotify-binpakietu.
badp

Odpowiedzi:

8

Elementy wewnętrzne walli są tak zablokowane i starożytne, że naprawdę nie ma sposobu, aby wyciągnąć z nich wiadomość, kiedy już tam jest.

Jedynym prawdziwym pomysłem wysuniętym w tym celu ( problem był już wielokrotnie omawiany ) jest zmiana skryptów shutdowni, rebootaby albo udostępnili coś za pośrednictwem dbus lub (ponieważ mamy do czynienia tylko z jednym komputerem i jedną poprawką) po prostu niech wyśle ​​wiadomość z powiadomieniem-wyślij.

Oni skrypty tylko tak można po prostu włamać się do nich. Ale myślę, że jest to prawdopodobnie powód, dla którego warto dążyć. Prześlij błąd przeciwko Ubuntu i dodaj swoje łatki (upewnij się, że mogą działać bez konieczności wysyłania powiadomienia, jeśli nie ma środowiska X). Potrzebujemy tego rodzaju użyteczności.

Nigdy wcześniej o tym nie słyszałem gxmessage, ale skorzystałbym notify-send.

Pełne rozwiązanie musiałoby zaspokoić możliwość wielu wyświetlaczy (np. Wielu użytkowników, zdalni użytkownicy itp.), Ale na szczęście napisałem trochę kodu na ten bit wczoraj:

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

(Używam eksportu zamiast flagi -displaylub, --displayponieważ nie wiem, czy notify-sendto bierze)

Oli
źródło
gxmessage to starożytna aplikacja. pomyśl o tym dbus i powiadomienie-wysyłanie jest znacznie lepszą opcją. Może uda mi się wypracować coś z zenity.
ocynowany
Tak, nie jestem pewien, co jest najlepsze. zenityostrzeżenia mogą być denerwujące, jeśli próbujesz ratować rzeczy przed wylogowaniem ... Ale notify-sendpowiadomienia mogą być po prostu ignorowane.
Oli
1
To prawda, że ​​powiadomienie-powiadomienie można zignorować, ale jeśli zostanie wyświetlone raz (np. 10 minut), może wykonać zadanie!
OpenNingia,
@Oli Odkryłem, że potrzebujesz również poprawnie ustawionej zmiennej środowiskowej XAUTHORITY, aby to działało.
badp
1
DISPLAY=$display notify-send...wyeksportuje tylko tę wartość DISPLAY dla tego polecenia; nie ma to znaczenia, ale jest przydatna gdzie indziej i, IMHO, trochę czystsza.
2

Możesz wysłać wiadomość ręcznie za pomocą zenity

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

Oczywiście możesz to uwzględnić w skrypcie.

misterben
źródło
Nie mogę otworzyć wyświetlacza, nawet jako superużytkownik (muszę sudo jako właściwy użytkownik) :(
badp
Powinien być w stanie - na pewno masz tam dwukropek ( =:0nie =0)
misterben,
nie, potrzebujesz również poprawnie ustawionej zmiennej środowiskowej XAUTHORITY.
badp
1

Powinieneś być w stanie napisać skrypt, który tworzy ptty i nasłuchuje pisemnych wiadomości (z zapisu lub ze ściany), a następnie przesyła je do wyjścia GUI.

singpolyma
źródło
0

AFAIK nie ma klienta X dla polecenia ściany, aby wyświetlić ten komunikat w środowisku graficznym. Możesz użyć aplikacji gxmessage do wyświetlania wyskakujących okienek, ale wtedy będziesz musiał napisać skrypt samodzielnie.

ocynowana
źródło