用于在唤醒时运行 *X11* 脚本的电源管理挂钩

用于在唤醒时运行 *X11* 脚本的电源管理挂钩

早些时候我问过一个类似的问题,但那是关于运行系统级脚本的。

我有一个脚本运行一系列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。

相关内容