我妻子坐在她的家庭桌面上,alpha
它运行着最新版本的 Ubuntu。我在公交车上,在我的 G1 手机上使用 ConnectBot,并且可以alpha
从任何地方通过 SSH 访问。
由于复杂的原因,我无法使用即时通讯、电子邮件或电话联系她。 (例如,我不想叫醒婴儿,我的 IM 客户端坏了,我的电子邮件服务器宕机了。)我唯一的选择是alpha
远程 ssh 并尝试以某种方式让某些内容出现在屏幕上。她正在使用 KDE;我怎样才能弹出一些东西来引起她的注意并让她知道我正在尝试与她沟通?我认为即使我的 SSH 会话没有 X 显示,也可以远程触发某些内容(例如 xmessage)以显示在她的屏幕上。
编辑:澄清一下,我的手机没有运行任何类型的 X,所以 X-over-ssh 是不可能的。下面的工作会起作用吗?
$ export DISPLAY=:0
$ xmessage "test"
答案1
DISPLAY
只要您知道alpha
当前正在显示哪个显示器,就可以通过环境变量告诉 X 程序使用哪个显示器。几乎可以肯定,唯一的显示是:0
,除非您手动摆弄它,所以如果您运行:
$ export DISPLAY=:0
然后您运行的任何 X 应用程序都将显示在 的alpha
显示器上。xmessage
是显示消息的不错选择;还有xdialog
。如果您已libnotify
安装,您可以使用notify-send
在屏幕一角弹出一条消息:
答案2
作为迈克尔·莫罗泽克图解,您可以运行显示在您妻子桌面上的 X 应用程序。您需要做的就是将DISPLAY
环境变量设置为正确的值(几乎总是:0
)......并获得自己的授权。
此解决方案要求您有权读取您妻子的文件。访问X服务器需要身份验证“曲奇饼”,这是 X 启动时随机生成并存储在文件中的密码。该文件通常是~/.Xauthority
;如果不是,则必须在XAUTHORITY
环境变量中指出。在默认设置(使用 Gdm)的 Ubuntu 下,你妻子的会话 cookie 不在其中,~wife/.Xauthority
而是在一个具有自动生成名称的文件中;看ssh 显示变量。也可以看看作为 root,我可以在另一个用户桌面上启动图形程序吗?,Linux:当通过 ssh+screen 启动会话时,wmctrl 无法打开显示。
如果你妻子打开了文本终端,你可以使用write
根据用户7440的建议在她的终端中写一些文本。这要求终端接受此类通知;您可以使用mesg y
或打开和关闭它mesg n
,我不知道现代终端模拟器上的默认状态是什么。
更复杂的机制write
是talk
。谈话协议是聊天程序的祖先;您可以与运行通话服务器且 UDP 端口 517 或 518(有两种协议变体)的计算机上的任何人进行通话。所以安装谈论过 安装talkd http://bit.ly/software-small,一个客户,例如谈话 安装 ytalk http://bit.ly/software-small, 和ytalk wife
。还有一个 X 客户端,聊天 安装xtalk http://bit.ly/software-small。据我所知,谈话已经不再受到关注(每个关心的人都使用一种现代聊天协议),并且没有系统组件可以生成谈话请求的 KDE 通知。
虽然您说您无法运行任何 IM 客户端……在您的家用计算机上运行并通过 SSH 访问的命令行 IM 客户端可以吗?有这样的,例如微信 安装weechat http://bit.ly/software-small。您仍然需要依靠某个服务器来连接您和您的妻子,但只能从您的家用计算机访问它,而不能从您的手机访问。
答案3
如果她打开了一个终端窗口(使用“who”来查找),您可以使用“write”写入该终端。这不适用于主终端,因为 KDE 隐藏了它,但任何终端窗口都应该可以工作(如果它位于当前桌面上,未最小化,她正在查看它......)。
答案4
我不能 100% 确定设置DISPLAY=:0.0
会起作用。我认为您需要一种方法来获得授权以连接到您妻子的 PC 上的 X 服务器。执行此操作的工具是xhost
和xauth
,但它们似乎要求您已经有权访问 X 服务器,因此大概只有您的妻子可以运行它们。 (先有鸡还是先有蛋的问题。)
如果失败,您也许可以启动第二个 X 服务器,例如使用X :1
, 或者也许chvt
可以提供帮助。
例如,类似的东西
# X :1
# export DISPLAY=:1.0
# xmessage 'hello'
如果我以 root 身份运行它,它似乎可以在我的系统上运行。
X :1
在我的系统上的 vt7 上启动,所以你也可以运行
# chvt 7
以确保 X 显示是当前可见的。