¿Hay alguna forma de mostrar mensajes de pared a los usuarios de escritorio?

9

Supongamos que estoy fuera de casa, trabajando en la computadora de mi casa. Por cualquier motivo, necesito reiniciarlo.

# shutdown -r +10

Esto envía un mensaje de advertencia cada minuto a través de wall, que es completamente invisible para el uso normal del escritorio por, digamos, mis padres.

¿Hay alguna forma de que los wallmensajes puedan llegar al escritorio a través de, por ejemplo, una notificación?

badp
fuente
1
Gracias a la información en las respuestas a esta publicación, pude hackear un programa de Python que hace justo lo que necesitaba. Depende del libnotify-binpaquete.
badp

Respuestas:

8

Las partes internas de wally están tan bloqueadas y antiguas que realmente no hay forma de extraer el mensaje una vez que está allí.

La única idea real planteada para esto ( el problema se ha discutido antes , muchas veces) es alterar los scripts shutdowny rebootpara que hagan que algo esté disponible a través de dbus o (ya que solo estamos tratando con una computadora y una solución), podría solo haga que envíe un mensaje de notificación de envío.

Ellos son los scripts sólo por lo que sólo podría introducirse en ellos. Pero creo que esta es probablemente una causa por la que vale la pena presionar. Envíe un error contra Ubuntu y agregue sus parches (solo asegúrese de que puedan funcionar sin necesidad de enviar la notificación si no hay un entorno X). Es este tipo de usabilidad lo que necesitamos.

Nunca he oído hablar gxmessageantes, pero lo usaría notify-send.

Una solución completa debería tener en cuenta la posibilidad de múltiples pantallas (por ejemplo, usuarios múltiples, usuarios remotos, etc.) pero afortunadamente ayer escribí un código para ese bit:

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

(Estoy usando exportar en lugar de una marca -displayo --displayporque tampoco sé si eso notify-sendtoma)

Oli
fuente
gxmessage es una aplicación antigua. Ahora que lo pienso, dbus y notificar-enviar es una opción mucho mejor. Tal vez pueda elaborar algo con zenity.
estañado
Sí, no estoy seguro de qué es lo mejor. zenityLas advertencias pueden ser molestas si estás luchando por salvar las cosas antes de cerrar sesión ... Pero es notify-sendposible que las notificaciones se ignoren.
Oli
1
Es cierto que la notificación de notificación de envío se puede ignorar, pero si se muestra una vez unos pocos (por ejemplo, 10 minutos) ¡podrían hacer el trabajo!
OpenNingia
@Oli He descubierto que también necesita la variable de entorno XAUTHORITY configurada correctamente para que esto funcione, sin embargo.
badp
1
DISPLAY=$display notify-send...solo exportará ese valor de DISPLAY para ese comando; No es que importe aquí, pero es útil en otros lugares y, en mi humilde opinión, un poco más limpio.
2

Puede enviar un mensaje manualmente usando zenity

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

Por supuesto, podría incluir esto en un script.

misterben
fuente
No puedo abrir la pantalla, incluso como superusuario (debo sudo como el usuario correcto) :(
badp
Debería poder - seguro que tienes el colon allí ( =:0no =0)
misterben
no pudo, también necesita que la variable de entorno XAUTHORITY esté configurada correctamente.
badp
1

Debería poder escribir una secuencia de comandos que crateas como un ptty y escuche los mensajes escritos (desde la escritura o el muro) y luego los reenvía a una salida de la GUI.

singpolyma
fuente
0

AFAIK no hay un cliente X para que el comando wall muestre estos mensajes en un entorno gráfico. Puede usar la aplicación gxmessage para mostrar ventanas emergentes, pero luego tendrá que escribir el guión usted mismo.

estañado
fuente