为什么我的登录脚本仅部分执行?

为什么我的登录脚本仅部分执行?

我在平板电脑上安装了 Lubuntu 16.04 Xenial。默认情况下,屏幕是横向的(像 Kindle 或 Nook 一样),而且平板电脑没有加速度计,无法在我旋转设备时自动检测。这没什么大不了的,因为我将始终将平板电脑用作“显示器”,即从其原始(Kindle/Nook 风格)方向旋转 90°。

我写了一个脚本来在登录时执行旋转,但由于某种原因,它正在执行显示屏的旋转,但是不是触摸屏输入。

我认为这可能是因为调用 xinput 命令时触摸屏输入尚未完全初始化,因为我可以在启动后手动执行脚本,并且它工作正常。我在脚本中考虑到了这一点,因此 xinput 命令会等到触摸屏输入初始化后才执行,但我仍然看到相同的结果。

脚本如下:

#!/bin/bash
sleep 3
xrandr -o right &
while [ -z "xinput | grep -v 'Pen' | grep 'ELAN'" ]
do
    sleep 1
done
xinput set-prop 'ELAN22A6:00 04F3:22A6' 'Coordinate Transformation Matrix' 0 1 0 -1 0 1 0 0 1
xinput disable 'ASUS HID Device ASUS HID Device Touchpad'

注意:xinput 列表下有两个名称几乎完全相同的设备 - 触摸屏输入和笔指针(不会使用)。设备ELAN22A6:00 04F3:22A6是触摸屏输入。

另外,这可能与我无关,但我正在运行gnome 外壳同样,在 Lubuntu 之上,它也被编写为在登录时启动(因为我不想将它作为默认桌面管理器)。

我在这里遗漏了什么?

答案1

看起来您缺少反引号。请尝试更改:

while [ -z "xinput | grep -v 'Pen' | grep 'ELAN'" ]

while [ -z "`xinput | grep -v 'Pen' | grep 'ELAN'`" ]

相关内容