在 X 会话恢复时运行配置脚本

在 X 会话恢复时运行配置脚本

在 Ubuntu 13.04 上,我必须手动配置触摸板,因为一个错误阻止我使用标准配置工具(更改不会保存)。但是我创建了一个设置速度、加速度和滚动的脚本,将其配置为在启动时运行,并且它可以工作。当我在暂停后恢复时,问题出现了:特别是滚动设置(最容易检查)消失了。根据其他问题和答案,我编写了这个脚本(其中包含我在前面提到的脚本中使用的相同命令),位于/etc/pm/sleep.d/ZZtouchpad

#!/bin/sh 
case "$1" in
    resume|thaw)
        xinput  --set-prop "CyPS/2 Cypress Trackpad" "Device Accel Constant Deceleration" 2
        xinput  --set-prop "CyPS/2 Cypress Trackpad" "Device Accel Velocity Scaling" 35
        xinput  --set-prop "CyPS/2 Cypress Trackpad" "Synaptics Scrolling Distance" -20, -20
esac

但它根本不起作用。

谢谢帮助!

编辑

我发现当使用pm-suspend或暂停时,脚本可以工作pm-suspend-hybrid,但当从系统菜单暂停或关闭笔记本电脑盖时,脚本则不起作用。错误似乎是“无法连接到 X 服务器”。

因此,最好重新表述这个问题:我应该把这些命令放在哪里,以便在 X 会话恢复时执行它们?我试过了,在和~/.xinitrc下的一个文件。有什么建议吗?~/.xinitrc.d~/.xsessionrc

答案1

我遇到了类似的问题。问题是连接到 X 服务器。我通过从 窃取 解决了这个问题/etc/acpi/sleep.sh。将以下内容放入/etc/pm/sleep.d/99_setup_touchpad

#! /bin/sh

. /usr/share/acpi-support/power-funcs

case "$1" in
    resume|thaw)
        if pidof xscreensaver > /dev/null; then
            for x in /tmp/.X11-unix/*; do
                displaynum=`echo $x | sed s#/tmp/.X11-unix/X##`
                getXuser;
                if [ x"$XAUTHORITY" != x"" ]; then
                    export DISPLAY=":$displaynum"
                    su $user -c "xinput set-prop 'CyPS/2 Cypress Trackpad' 'Device Accel Constant Deceleration' 2"
                    su $user -c "xinput set-prop 'CyPS/2 Cypress Trackpad' 'Device Accel Velocity Scaling' 35"
                    su $user -c "xinput set-prop 'CyPS/2 Cypress Trackpad' 'Synaptics Scrolling Distance' -20, -20"
                fi
            done
        fi
        ;;    
    *)
        # Nothing.
        ;;
esac

最后使文件可执行:chmod 755 /etc/pm/sleep.d/99_setup_touchpad

笔记:通常,我是唯一一个通过笔记本电脑上的 X 登录的人。因此,循环只是一次迭代。我不知道如果同时有多个会话处于活动状态会发生什么。以上对我来说已经足够了。

相关内容