linux - xdotool 类型需要很长时间并导致整个桌面卡住

标签 linux bash keyboard gnome xdotool

我一直在使用xdotool type过去只是在快捷方式上使用 xdotool type '¯\_(ツ)_/¯' .这可行,但总是需要相当长的时间,并导致整个桌面卡住(完全,不仅仅是输入)几秒钟。不过并没有打扰到我。

现在我需要一种方法来从文件中读取内容,对其进行操作,然后将其输入。我想使用 xdotool 来完成这样的任务:

while read URL; do
    xdotool type "!play $URL" && sleep 1 && xdotool key Return && sleep 1
done < <(mycommand)
mycommand发布大约 20 行 URL。一旦我运行了脚本,我的桌面(gnome3.26,archlinux)就完全卡住了。我通过 SSH 连接到机器杀死了 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)来解决这个问题。

关于linux - xdotool 类型需要很长时间并导致整个桌面卡住,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48038038/

相关文章:

java - 是否可以阻止 JVM 访问特定的 URL?

c++ - 如果我在代码块中构建代码,为什么我的代码运行得更快?

python - 乘客停止杀死孤儿进程

java - 按下主页按钮时关闭软键盘

node.js - 如何找到 NodeJS 使用的端口?

macos - 通过 bash 验证是否安装了 Homebrew 扩展(cask)

linux - Bash 脚本不会等到命令被正确执行

linux - 暂停后台运行的 bash 脚本

ios - 以编程方式在 iPhone 应用程序上显示键盘

python - 初学者 Python 键盘 GUI 设置