我需要使用 bash 或 python 脚本在运行 KDE 的 Debian 系统上以 root 身份向不同用户显示通知消息。到目前为止,我尝试过的方法是:
export DISPLAY=:X (X symbolizes the remote host data)
export XAUTHORITY=~$USERNAME/.Xauthority
zenity --warning --title $TITLE --text " $TEXT
这些命令可以执行我想要的操作,但只能通过终端执行。当我尝试在 Python 脚本中使用它们(使用 os.system() 或 subprocess.call())或尝试通过 shell 脚本运行时;它会失败(通常会向我登录的用户显示通知,而不是向目标用户显示通知。有时还会导致错误:
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
虽然我仍然不知道上述方法的具体问题是什么,但我终于找到了一个非常适合我的情况的解决方案。
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)