Показывать уведомление как root другим пользователям на KDE

763
Mustafa Orkun Acar

Мне нужно показывать уведомления пользователям с правами 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
Mustafa Orkun Acar

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

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) 

Похожие вопросы