![Как запретить xdotool блокировать текущее окно после выполнения скрипта?](https://rvso.com/image/38684/%D0%9A%D0%B0%D0%BA%20%D0%B7%D0%B0%D0%BF%D1%80%D0%B5%D1%82%D0%B8%D1%82%D1%8C%20xdotool%20%D0%B1%D0%BB%D0%BE%D0%BA%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D1%82%D0%B5%D0%BA%D1%83%D1%89%D0%B5%D0%B5%20%D0%BE%D0%BA%D0%BD%D0%BE%20%D0%BF%D0%BE%D1%81%D0%BB%D0%B5%20%D0%B2%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B5%D0%BD%D0%B8%D1%8F%20%D1%81%D0%BA%D1%80%D0%B8%D0%BF%D1%82%D0%B0%3F.png)
У меня есть простой 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-terminal
и killall -9 xdotool
это не отключает блокировку.
Как предотвратить xdotool
блокировку текущего окна после его запуска в скрипте?
решение1
Он пищит, потому что ждет, когда вы нажмете на окно, с которым вы хотите, чтобы он взаимодействовал. Разве вы не заметили, что курсор изменился на символ '+'?
Прочитайте страницу man еще раз. Вам нужно указать идентификатор окна (--windowидентификатор)
решение2
Я наткнулся на этот довольно старый вопрос, ища ответ сам, потому что у меня была/есть похожая проблема. Я использую xdotool для автоматического ввода информации для входа на веб-сайты (в Firefox).
Я привязал комбинацию клавиш к скрипту с помощью xbindkeys. Скрипт идентифицирует имя окна (также с помощью xdotool), ищет связанную запись в зашифрованном файле, загружает соответствующую информацию для входа и вводит ее.
Я не буду объяснять тонкости моего скрипта, взаимодействие пользователя с ним и то, как он вводит информацию в поля ввода. Однако я решил проблему,добавление короткого сна непосредственно перед началом печати.
sleep 0.4
xdotool type ...
Признаю, что это хакерское решение, но оно, кажется, работает. Надеюсь, это решение может помочь кому-то еще, кто хочет преодолеть этот очень раздражающий баг(?), или, может быть, побудит кого-то написать лучший ответ.