1

Мне нужно показывать уведомления пользователям с правами root в системе Debian под управлением KDE со скриптом bash или python. Что я пробовал до сих пор:

export DISPLAY=:X (X symbolizes the remote host data)
export XAUTHORITY=~$USERNAME/.Xauthority
zenity --warning --title $TITLE --text " $TEXT

Эти команды делают то, что я хочу, но только через терминал. Когда я пытаюсь использовать их в скрипте Python (используя os.system () или subprocess.call ()) или пытаюсь запустить скрипт оболочки; происходит сбой (обычно показывает уведомление пользователю, который вошел в систему, а не целевому пользователю. Также иногда приводит к ошибкам:

Could not open X display 
No protocol specified 
Gtk-WARNING **: cannot open display: :X. 
XDG_RUNTIME_DIR not set in the environment.

Но также он редко показывает уведомление правильному пользователю. Поэтому я не мог понять, как он себя ведет.)

Я также читал, что zenity не подходит для KDE, предпочтительнее kdialog.

kdialog --title "some title" --passivepopup "some text" 5 & (number for the time-out)

Используя приведенную выше команду с gksu и su, снова ничего не получится. Я также пытался с pynotify. Я предполагаю, что проблема не в том, как я создаю сообщение уведомления, а в том, чтобы показать пользователю, более непосредственно, подключение к X-серверу или передачу пользовательских настроек X-сервера.

Мне нужна помощь на этом этапе; Любое предложение приветствуется.

1 ответ1

1

Хотя я до сих пор не знаю, в чем именно заключается проблема с описанным выше подходом, я, наконец, нашел решение, прекрасно подходящее для моего случая.

cat /home/remote-user/.Xauthority | xauth merge -              #merge the Xauth information of user
DISPLAY=:X kdialog --title 'some title' --sorry 'some_message' (X symbolizes the remote host data)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .