我在华硕 UL30 上运行 11.04。我试图运行一个脚本来修复我的 synclient 设置(在恢复期间丢失)。我在 /etc/pm/sleep.d/10_touchpad 中编写了以下脚本:
#!/bin/sh
#change synclient settings on resume
case "$1" in
resume|thaw)
sleep 15 && synclient TapButton2=2 TapButton3=3 ;;
esac
/var/log/pm-suspend 显示以下内容:
/etc/pm/sleep.d/10_grub-common suspend suspend: 成功。正在运行钩子 /etc/pm/sleep.d/10_touchpad suspend suspend: /etc/pm/sleep.d/10_unattended-upgrades-hibernate resume suspend: 成功。正在运行钩子 /etc/pm/sleep.d/10_touchpad resume suspend: 无法连接到 X 服务器。
/etc/pm/sleep.d/10_touchpad 恢复暂停:成功。正在运行钩子 /etc/pm/sleep.d/10_grub-common
不太确定为什么此脚本无法在恢复时更改 synclient 更改。如有任何见解,我将不胜感激……
答案1
直接回答
为了实现您的目标(在您的机器恢复时运行依赖于 X-session 的用户空间脚本),您必须:
- 以适当的用户身份运行脚本;并且
- 确保 DISPLAY 变量已设置。
我会将该行移至sleep 15 && synclient TapButton2=2 TapButton3=3
单独的文件/usr/local/sbin/setupTouchpad.sh
并将该行替换为:
export DISPLAY=:0
su -c - <yourusername> /usr/local/sbin/setupTouchpad.sh
应该替换的位置<yourusername>
。请注意,在运行代码之前,最好留出一些睡眠时间以确保系统处于唤醒状态。另外,请确保chmod +x
该setupTouchpad.sh
脚本。
更好的方法
上述问题在于您必须硬编码您的用户名(或使用一些黑客方法来发现哪个用户已登录并具有活动的 X 会话)。最好为 X 设置系统范围的触摸板设置。
这些选项可以设置在/usr/share/X11/xorg.conf.d/
对我来说,要编辑的正确文件在50-synaptics.conf
这里我已经设置了选项,这是该文件的一部分:
Section "InputClass"
Identifier "touchpad catchall"
Driver "synaptics"
MatchIsTouchpad "on"
Option "TapButton2" "2"
Option "TapButton3" "3"
# Etc...
EndSection
您可能已经知道,要查看有效选项,只需运行synclient
。
笔记您必须重新启动 X 才能使这些更改生效。例如,在 Ubuntu 中,您可以运行sudo /etc/init.d/lightdm restart
要预览您的更改,您可以尝试运行以下行(或某些变体)。 | bash
从末尾删除以查看它发出的命令。
cat /usr/share/X11/xorg.conf.d/50-synaptics.conf | grep Option | grep -v "^\#" | awk '{print "synclient " $2 "=" $3}' | sed 's/\"//g' | bash
如果您用 Google 搜索,touchpad settings synaptics xorg.conf.d
您还会发现一些很好的选项概述。
参考