LINUX.ORG.RU

Борьба с xdotool

 , , ,


1

1

Есть программа qtox. Хочу сделать автоматизацию ввода пароля в начальном окне qtox при помощи xdotool.

Написал такой скрипт:

#!/bin/bash

killall qtox
qtox
xdotool mousemove 974 538 click 1
xdotool type '123'

При запуске выдаёт в терминале следующее:

superman@superman-net:~$ ./my-automate.sh 
qtox: no process found
Gtk-Message: 17:52:53.065: Failed to load module "canberra-gtk-module"
[14:52:53.077 UTC] persistence/settings.cpp:133 : Debug: "Loading settings from /home/superman/.config/tox/qtox.ini"
[14:52:53.106 UTC] widget/translator.cpp:51 : Debug: Loaded translation "ru"
[14:52:53.106 UTC] widget/translator.cpp:59 : Debug: System translation loaded "ru"
[14:52:53.107 UTC] ipc.cpp:61 : Debug: Our global IPC ID is  11903581899070345488
[14:52:53.107 UTC] main.cpp:251 : Debug: commit:  build without git
123superman@superman-net:~$ 123

окошко qtox появляется, вроде бы как есть клик по полю пароля, но курсор там моргает даже без клика, поэтому за клик не ручаюсь … и всё. Ввода «123» нет …

Такое ощущение, будто скрипт не знает, куда делать type и печатает его в терминале, когда я закрываю окошко qtox.

Что я делаю не так?

Нашёл решение на зарубежном форуме!


#!/bin/bash

killall qtox						
qtox &							
sleep 2							
xdotool mousemove 974 538 click 1			
xdotool type '123'

Забыл «отпустить» процесс экзекуции, всё верно!

Ответ на: комментарий от anonymous

Нет, нужен автоматизированный ввод пароля, без кучи кликов и мастеров-паролей и проч. KeePassXC активно использую, но в данном случае хочется сделать скрипт для людей, которые с этим менеджером паролей не то чтобы не знакомы, а вообще не представляют зачем и для чего это).

UbuntUser ()
Ответ на: комментарий от UbuntUser

Хочу сделать автоматизацию ввода пароля в начальном окне qtox

хочется сделать скрипт для людей, которые с этим менеджером паролей не то чтобы не знакомы, а вообще не представляют зачем и для чего это

За что ты с ними так? Может скайп-вибер-етц, чтоб людей не мучить?

vvn_black ★★★★★ ()
Ответ на: комментарий от vvn_black

Ну, ок, пускай это будет на примере чего угодно. Просто интересно, как с помощью xdotool печатать в активном окне.

UbuntUser ()
qtox
xdotool mousemove 974 538 click 1

Запустите скрипт при помощи bash -v или bash -x. Когда запускается qtox? Когда запускается xdotool?

Автоматизация GUI - неблагодарное дело. Разберётесь с запуском qtox в фоне - придётся разбираться, как в скрипте дождаться появления нужных элементов управления на экране, попадать в них, а не в захардкоженные координаты…

anonymous ()
Ответ на: комментарий от anonymous

Когда запускается qtox? Когда запускается xdotool? Сначала qtox, потом xdotool. Вот, что даёт bash -x:

superman@superman-net:~$ bash -x ./my-automate.sh 
+ killall qtox
qtox: no process found
+ qtox
Gtk-Message: 19:02:01.915: Failed to load module "canberra-gtk-module"
[16:02:01.927 UTC] persistence/settings.cpp:133 : Debug: "Loading settings from /home/superman/.config/tox/qtox.ini"
[16:02:01.953 UTC] widget/translator.cpp:51 : Debug: Loaded translation "ru"
[16:02:01.954 UTC] widget/translator.cpp:59 : Debug: System translation loaded "ru"
[16:02:01.954 UTC] ipc.cpp:61 : Debug: Our global IPC ID is  2629875120937102813
[16:02:01.954 UTC] main.cpp:251 : Debug: commit:  build without git
+ xdotool mousemove 974 538 click 1
+ xdotool type 123
123superman@superman-net:~$ 123
UbuntUser ()

Что я делаю не так?

Подсадиваешь людей на дерьмо. А ещё не пользуешься менеджерами паролей.

xDShot ★★★★★ ()
Ответ на: комментарий от xDShot

Подсадиваешь людей на дерьмо.

Кривость данного струмента ещё та, но определённые вещи удаётся автоматизировать именно им (без альтернатив). При этом приходится кучу sleep-ов пристраивать, чтобы работало. Зачем xdotool в данном случае, непонятно совсем, но право на сущ он имеет.

anonymous ()
Ответ на: комментарий от UbuntUser

Сначала qtox, потом xdotool.

Правильно. Причём xdotool запускается только после того, как qtox завершится.

Теперь читайте про запуск в фоне.

anonymous ()

Во-первых, killall -w.

Во вторых, qtox &.

В третьих, окна гуёвых программ появляются не мгновенно и не всегда по фиксированным координатам и иногда юзер (или другая программа) может украсть фокус у нужного окна.

legolegs ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.