Чи є спосіб показувати стінні повідомлення користувачам настільних ПК?


9

Скажімо, я перебуваю далеко від дому, ssh-ing на своєму домашньому комп’ютері. З будь-якої причини мені це потрібно перезавантажити.

# shutdown -r +10

Це надсилає попереджувальне повідомлення щохвилини через wall, що абсолютно непомітно для звичайного використання робочого столу, скажімо, моїми батьками.

Чи можливий спосіб wallповідомлення надходити на робочий стіл за допомогою, скажімо, сповіщення.


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 і сповістити-надіслати - це набагато кращий варіант. Можливо, я можу щось попрацювати із завзяттям.
Обмальовано

Так, я не впевнений, що найкраще. zenityпопередження можуть дратувати, якщо ви намагаєтесь зберегти речі, перш ніж вийти з системи ... Але notify-sendсповіщення можуть просто ігноруватися.
Олі

1
Це правда, що сповіщення про надсилання та надсилання може бути проігноровано, але якщо відображатиметься один раз за кілька хвилин (наприклад, 10 хвилин), вони можуть зробити цю роботу!
OpenNingia

@Oli Я знайшов, що вам також потрібна змінна середовища XAUTHORITY, правильно встановлена ​​для цього, щоб працювати.
badp

1
DISPLAY=$display notify-send...експортує лише це значення DISPLAY для цієї команди; не те, що це має значення тут, але це корисно в інших місцях і, IMHO, трохи чистіше.

2

Ви можете надіслати повідомлення вручну, використовуючи zenity

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

Звичайно, ви можете включити це в сценарій.


Я не можу відкрити дисплей, навіть як суперпользователь (я повинен судо як правильний користувач) :(
badp

Потрібно мати змогу - впевнений, що у вас там є товста кишка ( =:0ні =0)
misterben

не вдалося, вам також потрібна коректна змінна середовища XAUTHORITY.
badp

1

Ви повинні мати змогу написати сценарій, який обробляє ptty та слухає написані повідомлення (з запису або стіни), а потім пересилає його на вихід GUI.


0

AFAIK не існує клієнта X для команди стіни для відображення цих повідомлень у графічному середовищі. Ви можете використовувати додаток gxmessage для відображення спливаючих вікон, але тоді вам доведеться написати сценарій самостійно.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.