Можно ли показывать настенные сообщения пользователям настольных компьютеров?
Допустим, я нахожусь вдали от дома, ssh-ы на моем домашнем компьютере. По какой-то причине мне нужно его перезагрузить.
# shutdown -r +10
Это отправляет предупреждающее сообщение каждую минуту через wall
, который совершенно невидим для обычного использования на рабочем столе, скажем, моими родителями.
Там в любом случае wall
сообщения могут попасть на рабочий стол, скажем, через уведомление.
4 ответа
Внутренние органы wall
и настолько заблокированы и древние, что на самом деле нет никакого способа извлечь из него послание, как только оно окажется там.
Единственная реальная идея, выдвинутая для этого ( проблема обсуждалась много раз), состоит в том, чтобы изменить shutdown
а также reboot
скрипты, чтобы они либо делали что-то доступным через dbus, либо (так как мы имеем дело только с одним компьютером и одним исправлением), вы можете просто отправить сообщение "уведомить-отправить".
Они просто сценарии, так что вы можете взломать их. Но я думаю, что это, вероятно, причина, которую стоит настаивать. Отправьте сообщение об ошибке в Ubuntu и добавьте свои патчи (просто убедитесь, что они могут работать, не отправляя уведомление, если X-среды нет). Именно такой юзабилити нам нужен.
Я никогда не слышал о gxmessage
раньше, но я бы использовал notify-send
,
Полное решение должно было бы учитывать возможность использования нескольких дисплеев (например, нескольких головок, удаленных пользователей и т. Д.), Но, к счастью, вчера я написал некоторый код для этого бита:
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
(Я использую экспорт вместо -display
или же --display
флаг, потому что я не знаю, что notify-send
занимает либо)
Вы можете отправить сообщение вручную, используя zenity
zenity --warning --text "badp's about to restart the computer" --display=:0
Конечно, вы можете включить это в сценарий.
Вы должны быть в состоянии написать сценарий, который создает ptty и прослушивает написанные сообщения (от записи или стены), а затем перенаправляет их на выход GUI.
AFAIK нет X-клиента для команды wall для отображения этих сообщений в графической среде. Вы можете использовать приложение gxmessage для отображения всплывающих окон, но тогда вам придется написать скрипт самостоятельно.