如何防止xdotool在执行脚本后锁定当前窗口?

如何防止xdotool在执行脚本后锁定当前窗口?

我有一个简单的 BASH 脚本xdotool,它从 CSV 读取一些数据,并将其输入到其他软件的表单中:

#!/bin/bash

sleep 5

while read -r line
do
    a="$(echo $line | awk '{ print $1 }')"
    xdotool type $a
    xdotool key "$Tab"
done < ./data.csv

aplay Beep.wav

该脚本按预期工作,但在发出蜂鸣声后,屏幕被锁定:

  • 鼠标移动,但没有任何窗口可以看到它(例如不出现工具提示)并且它无法单击任何内容,甚至是当前窗口。
  • 键盘单词,但仅限于当前窗口内。
  • 窗户就这样被锁了大约5分钟,然后突然就不再锁了。

CTRL+ALT+F1 允许我更改控制台,但killall -9 xfce4-terminalkillall -9 xdotool没有停止锁定。

如何防止xdotool在脚本中运行当前窗口后锁定当前窗口?

答案1

它会发出蜂鸣声,因为它正在等待您单击要与其交互的窗口。您没有注意到光标变成了“+”符号吗?

再次阅读手册页。您需要提供一个窗口 ID (--windowID

答案2

我自己遇到了这个相当老的问题来寻找答案,因为我有类似的问题。我使用 xdotool 在网站上自动输入登录信息(在 Firefox 中)。

我使用 xbindkeys 将组合键绑定到脚本。该脚本识别窗口名称(也使用 xdotool),在加密文件中查找关联条目,加载适当的登录信息并键入它。

我不会解释我的脚本的复杂性、用户与其交互以及它将信息输入输入字段的方式。但是,我解决了这个问题在实际打字之前添加短暂的睡眠

sleep 0.4
xdotool type ...

我承认这是一个黑客解决方案,但它似乎有效。我希望这个解决方案可以对任何其他想要克服这个非常令人沮丧的错误(?)的人有所帮助,或者可能敦促其他人写出更好的答案。

相关内容