Existe uma maneira de exibir mensagens de parede para usuários de desktop?

9

Digamos que estou longe de casa, jogando no meu computador em casa. Por qualquer motivo, preciso reiniciar.

# shutdown -r +10

Isso envia uma mensagem de aviso a cada minuto wall, que é completamente invisível para o uso normal da área de trabalho por, digamos, meus pais.

Existe alguma maneira de as wallmensagens chegarem à área de trabalho via, digamos, notificação.

badp
fonte
1
Graças à informação nas respostas a este post, eu poderia cortar juntos um programa Python que faz exatamente o que eu precisava. Depende do libnotify-binpacote.
badp

Respostas:

8

Os internos de walle são tão bloqueados e antigos que realmente não há como extrair a mensagem dela uma vez que ela esteja lá.

A única idéia real apresentada para isso ( o problema já foi discutido muitas vezes) é alterar os scripts shutdowne rebootpara que eles disponibilizem algo via dbus ou (como estamos lidando apenas com um computador e uma correção), você pode basta enviar uma mensagem de notificação de envio.

Eles são apenas scripts, para que você possa invadir eles. Mas acho que essa é provavelmente uma causa pela qual vale a pena insistir. Envie um bug ao Ubuntu e adicione seus patches (apenas verifique se eles podem funcionar sem a necessidade de enviar a notificação se não houver ambiente X). É esse tipo de usabilidade que precisamos.

Eu nunca ouvi falar gxmessageantes, mas eu usaria notify-send.

Uma solução completa precisaria atender à possibilidade de vários monitores (por exemplo, multi-cabeças, usuários remotos, etc.), mas felizmente eu escrevi algum código para esse bit ontem:

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

(Estou usando exportação em vez de um sinalizador -displayou --displayporque não sei o que notify-sendé necessário)

Oli
fonte
gxmessage é um aplicativo antigo. pense nisso dbus e notificar-enviar é uma opção muito melhor. Talvez eu possa trabalhar em algo com zenidade.
tinhed
Sim, eu não tenho certeza do que é melhor. zenityos avisos podem ser irritantes se você estiver tentando salvar coisas antes de terminar a sessão ... Mas as notify-sendnotificações podem ser ignoradas.
Oli
1
É verdade que a notificação de notificação de envio pode ser ignorada, mas se exibida uma vez em algumas (por exemplo, 10 minutos), eles podem fazer o trabalho!
OpenNingia 11/11
@ Oli, descobri que você também precisa da variável de ambiente XAUTHORITY definida corretamente para que isso funcione.
badp
1
DISPLAY=$display notify-send...exportará apenas esse valor de DISPLAY para esse comando; não que isso importe aqui, mas seja útil em outros lugares e, IMHO, um pouco mais limpo.
2

Você pode enviar uma mensagem manualmente usando o zenity

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

Obviamente, você pode incluir isso em um script.

misterben
fonte
Não consigo abrir a tela, mesmo como superusuário (devo sudo como o usuário certo) :(
badp
Deve ser capaz de - garantir que você tenha dois pontos ( =:0não =0)
misterben 11/11
não pôde, você também precisa da variável de ambiente XAUTHORITY definida corretamente.
badp
1

Você deve ser capaz de escrever um script que crie uma pasta e ouça mensagens escritas (de gravação ou parede) e depois encaminhe-o para uma saída da GUI.

singpolyma
fonte
0

AFAIK, não há cliente X para o comando wall exibir essas mensagens em um ambiente gráfico. Você pode usar o aplicativo gxmessage para exibir pop-ups, mas precisará escrever o script sozinho.

estanhado
fonte