早些时候我问过一个类似的问题,但那是关于运行系统级脚本的。
我有一个脚本运行一系列xinput
命令,以便在触摸板上启用两指滚动。每次计算机睡眠和再次唤醒时都必须重新运行它,并且必须从 X11 会话内运行。当计算机唤醒时,如何触发脚本在 X11 桌面上运行?
PS一怀疑有一种方法可以用 DBUS 来做到这一点,但我对具体细节很模糊。也许具有更强 DBUS-fu 的人可以为我指明正确的方向。
答案1
如果你有gnome-control-center
安装、运行gnome-mouse-properties
并访问触摸板选项卡并单击两指滚动:
它的效果非常好,而且在唤醒过程中也是如此。因此,除非您也将脚本用于其他用途,否则请将它们扔掉:)
答案2
尝试导出DISPLAY
现有 X 会话的变量。
假设它是:0
,请将以下内容添加到脚本的开头(好吧,至少在运行任何与 X 相关的命令之前)。
export DISPLAY=":0"
我认为您可能还需要通过在现有的 X 终端之一中运行以下命令来向本地主机授予授权。 (我假设是您,并且只有您在这个系统上,如果不是,这将允许其他本地用户访问您的 X 显示)
xhost +localhost
我已经有一段时间没有真正玩X了,所以希望有人能过来纠正我。
答案3
编辑:看来我的阅读理解能力受到了损害,我认为这对 X11 方面没有帮助,抱歉。
如果您的系统使用 pm-utils 包进行睡眠/唤醒,您可以将脚本放入
/etc/pm/sleep.d/
这是我在休眠后连接串行鼠标的脚本:
#!/bin/sh
# Action script to ensure that serial mouse works
# after a hibernate/suspend
#
# Copyright: Copyright (c) 2009 Michael Vogt
# License: GPL-2
#
PATH=/sbin:/usr/sbin:/bin:/usr/bin
SELF=attach-serial-mouse
COMMAND=
IFPLUGD_IFACE=
# pm-action(8) - <action> <suspend method>
#
case "${1}" in
hibernate)
# nothing
;;
resume|thaw)
inputattach --daemon -ms3 /dev/ttyS0
;;
esac
我将其保存为 00_attach_serial_mouse。