Можно ли показывать настенные сообщения пользователям настольных компьютеров?

9

Допустим, я нахожусь вдали от дома, на своем домашнем компьютере. По какой-то причине мне это нужно перезагрузить.

# shutdown -r +10

Каждую минуту отправляется предупреждающее сообщение wall, которое, например, мои родители совершенно не видят для обычного использования на рабочем столе.

Есть ли способ, которым wallсообщения могут попасть на рабочий стол через, скажем, уведомление.

badp
источник
1
Благодаря информации в ответах на этот пост, я смог взломать программу на Python, которая делает именно то, что мне нужно. Это зависит от libnotify-binпакета.
badp

Ответы:

8

Внутренние части 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занимает либо)

Оли
источник
gxmessage - это древнее приложение. если подумать, то dbus и notify-send - намного лучший вариант. Может быть, я могу что-то придумать с zenity.
закончил
Да, я не уверен, что лучше. zenityПредупреждения могут раздражать, если вы пытаетесь сохранить вещи до выхода из системы ... Но notify-sendуведомления могут просто игнорироваться.
Оли
1
Это правда, что уведомление-уведомление-отправка может быть проигнорировано, но при отображении один раз в несколько (например, 10 минут) они могут сделать эту работу!
OpenNingia
@Oli Я обнаружил, что вам также необходимо правильно установить переменную окружения XAUTHORITY, чтобы это работало.
badp
1
DISPLAY=$display notify-send...будет экспортировать только это значение DISPLAY для этой команды; не то, чтобы здесь это имело значение, но это полезно в другом месте и, ИМХО, немного чище.
2

Вы можете отправить сообщение вручную, используя zenity

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

Конечно, вы можете включить это в сценарий.

misterben
источник
Я не могу открыть дисплей, даже как суперпользователь (я должен sudo как правильный пользователь) :(
badp
Должен быть в состоянии - уверен, что у вас есть толстая кишка там ( =:0не =0)
Misterben
не удалось, вам также нужно правильно установить переменную окружения XAUTHORITY.
badp
1

Вы должны быть в состоянии написать сценарий, который создает ptty и слушает написанные сообщения (от записи или стены), а затем перенаправляет их на выход GUI.

singpolyma
источник
0

AFAIK нет X-клиента для команды wall для отображения этих сообщений в графической среде. Вы можете использовать приложение gxmessage для отображения всплывающих окон, но тогда вам придется написать скрипт самостоятельно.

tinhed
источник