con*_*tti 7 linux keyboard bash gnome xdotool
xdotool type过去我一直只使用xdotool type '¯\_(?)_/¯'. 这可行,但总是需要相当长的时间并导致整个桌面冻结(完全,而不仅仅是输入)几秒钟。不过也没有太打扰我。
现在我需要一种方法来从文件中读取内容,对其进行操作,然后将其输入。我想使用 xdotool 来完成这样的任务:
while read URL; do
xdotool type "!play $URL" && sleep 1 && xdotool key Return && sleep 1
done < <(mycommand)
Run Code Online (Sandbox Code Playgroud)
在mycommand大约20行的网址放了出来。一旦我运行脚本,我的桌面(gnome3.26,archlinux)就完全冻结了。我 SSHd 进入机器杀死 bash 进程(成功),但这对冻结状态没有任何作用。十分钟后,它再次运行,命令确实运行了(例如,xdotool 按预期正确键入了所有内容)但我不得不重新启动 X 服务器,因为我的鼠标不再工作了。
我需要一种方法来自动输入xdotool type,但没有这种冻结行为。最好的情况是一个工具,可以输入我几乎立即通过的整个文本。我想到了一个解决方案xclip,然后只是模拟粘贴和输入的按键,但我认为必须有一个更好的解决方案。
这个问题xdotool对我来说已经存在大约两年了(总是在 gnome + archlinux 上),但直到现在我只需要耸耸肩就不需要它了。我猜这不仅仅是因为我使用的版本中的错误。只是为了完整性:
$ xdotool --version
xdotool version 3.20160805.1
我在 Xubuntu 上遇到了同样的问题,所以这不仅仅是 GNOME 的问题。看起来问题出在 xserver、专有 nvidia 驱动程序和一些合成管理器之间的交互中。
在 Xubuntu 中,我通过禁用合成器(设置管理器 > 窗口管理器调整 > 合成器)解决了这个问题。结果,撕裂开始了,这个命令部分地处理了这个问题(在自动启动中添加):nvidia-settings --assign CurrentMetaMode="1920x1080 +0+0 { ForceCompositionPipeline = On }"。
理论上,您可以通过更改视频驱动程序或从 X 切换到 Wayland(以及从 xdotool 切换到 ydotool)来解决此问题。