有没有办法向桌面用户显示墙面留言?


9

假设我出门在外,在家用计算机上摇晃。出于任何原因,我都需要重新启动它。

# shutdown -r +10

这会通过发出每分钟的警告消息wall,对于我的父母来说,在正常的桌面使用中这是完全不可见的。

wall消息是否可以通过通知方式到达桌面。


1
多亏了这篇文章的答案中的信息,我可以一起破解一个Python程序,该程序可以满足我的需要。这取决于libnotify-bin包装。
badp 2010年

Answers:


8

和的内部机制wall是如此古老而古老,以至于一旦将消息放入其中,实际上就无法从中提取消息。

为此提出的唯一真正的想法(这个问题已经讨论过很多次了)是更改shutdownand 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

(我使用的是export而不是-displayor或--displayflag,因为我不知道notify-send两者都需要)


gxmessage是一个古老的应用程序。想到它dbus和notify-send是一个更好的选择。也许我可以用热情去做一些事情。
2010年

是的,我不确定什么是最好的。zenity如果您在注销之前争先恐后地保存东西,那么警告可能会很烦人。但是notify-send通知可能只是被忽略了。
奥利(Oli)

1
的确,可以忽略notify-send通知,但是如果显示几次(例如10分钟),它们可能会完成任务!
OpenNingia 2010年

@Oli我发现您还需要正确设置XAUTHORITY环境变量才能起作用。
badp 2010年

1
DISPLAY=$display notify-send...只会为该命令导出该DISPLAY的值;并不是在这里很重要,但是它在其他地方很有用,恕我直言,有点干净。

2

您可以使用zenity手动发送消息

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

当然,您可以将其包括在脚本中。


我无法以超级用户的身份打开显示器(我必须以正确的用户身份使用sudo):(
badp 2010年

应该能够-确保您在那里有结肠(=:0不是=0
2010年

不能,您还需要正确设置XAUTHORITY环境变量。
badp 2010年

1

您应该能够编写一个脚本,该脚本创建一个ptty并侦听书面消息(来自write或wall),然后将其转发到GUI输出。


0

AFAIK wall命令没有X客户端,可以在图形环境中显示这些消息。您可以使用gxmessage应用显示弹出窗口,但随后您必须自己编写脚本。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.