我编写了一个脚本,它通过输出来synclient
确定笔记本电脑的触摸板是否奇迹般地关闭了(Ubuntu 最近似乎很喜欢这样做),如果是的话,则将其重新打开。
脚本大致如下:
#!/bin/bash
while true ; do
if [ `synclient | grep -e"TouchpadOff[\s]*1" | wc -l` -ge 1 ] ; then
synclient TouchpadOff=0
fi
sleep(3)
done
(我现在手边没有笔记本电脑,但你明白我的意思!如果不正确的话,我稍后会在笔记本电脑旁更新)
因此我尝试将其作为 upstart 脚本运行,这样我的触摸板就可以自行修复而无需任何交互。但是当我的脚本启动时,synclient 似乎找不到当前用户的 X 会话。
我尝试使用类似su -c myscript.sh ledneb
脚本节中的代码来运行它,但无济于事。
我应该朝 /etc/X11/xinit/xinitrc 而不是 upstart 的方向寻找吗?
是否有适当的方法让该脚本在当前(甚至是硬编码)用户的 x 会话上下文中运行?
答案1
你可以做你所要求的事情......
- http://upstart.ubuntu.com/cookbook/#run-a-job-as-a-different-user
- http://upstart.ubuntu.com/cookbook/#run-a-gui-application
- http://upstart.ubuntu.com/cookbook/#user-job
- http://upstart.ubuntu.com/cookbook/#respawn
...但我不确定这是正确的方法。如果您还没有这样做,请考虑在 Ubuntu 中报告此问题,以便可以修复它,因为您描述的行为听起来像是一个错误。