Нужен инструмент автоматического отключения, чтобы автоматически нажимать кнопку ОК во всплывающем окне в Linux - PullRequest
3 голосов
/ 22 февраля 2012

Мне нужен инструмент, похожий на ClickOff , но этот инструмент может работать в Linux.

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

ClickOff отлично работает для меня, но дело в том, что он не может работать в Linux. Так что любой, кто знает такой инструмент или предложит мне подход, чтобы я мог написать такой инструмент для Linux. Мой опыт работы с Linux скромен, поэтому, пожалуйста, помогите мне.

1 Ответ

3 голосов
/ 22 февраля 2012

Это может сработать для вас.

xdotool позволяет программно (или вручную) имитировать ввод с клавиатуры и активность мыши, перемещение и изменение размеров окон и т. д. Это делается с помощью Расширение X11 XTEST и другие функции Xlib.

Существует некоторая поддержка расширенных подсказок диспетчера окон (или EWMH или NetWM).

Примерно так можно автоматизировать в сценарии оболочки НО ниже перемещается курсор, поэтому, если вы хотите, чтобы он работал постоянно, как фоновый демон, вы должны сохранить исходные координаты мыши и впоследствии установить их обратно. ... Лично я бы ненавидел что-то вроде этого, потому что это крадет ваш (оконный) фокус ...:

  1. Поиск окна по названию:

    export WINID=`xdotool --onlyvisible --name YOURAPP`
    
  2. собрать дополнительную информацию об окне Обычно полезно знать высоту и ширину окна.

    WIDTH=`xwininfo -all -int -id $WINID|grep Width|cut -d ':' -f2 |cut -d ' ' -f2`
    HEIGHT=`xwininfo -all -int -id $WINID|grep Height|cut -d ':' -f2 |cut -d ' ' -f2`
    
  3. Поместить мышь в верхний угол окна: чтобы установить положение мыши с смещением 0,0 от верхнего левого угла окна, сначала используйте

    xwininfo to determine window position...
    
    TOP_LEFT_X=`xwininfo -all -int -id $WINID|grep Absolute |grep X |cut -d ':' -f2 |sed 's/ //g'`
    TOP_LEFT_Y=`xwininfo -all -int -id $WINID|grep Absolute |grep Y |cut -d ':' -f2 |sed 's/ //g'`
    

    Теперь используйте эти координаты, чтобы расположить мышь абсолютно.

    xdotool mousemove $TOP_LEFT_X $TOP_LEFT_Y
    

    ПРИМЕЧАНИЕ : при использовании изогнутых угловых окон при щелчке в этой точке можно выбрать другое окно и отключить фокусировку Ваша цель.

  4. Вы можете рассчитать относительные позиции на основе процентов, например: с помощью инструмента «bc» на командная строка:

    CENTER_X=`echo $WIDTH/2|bc`
    CENTER_Y=`echo $HEIGHT/2|bc`
    
  5. Переместить курсор:

    xdotool mousemove_relative $CENTER_X $CENTER_Y
    

    Если вы хотите, чтобы указатель располагался по центру по горизонтали, но на 135 пикселей выше нижней части окно:

    xdotool mousemove_relative $CENTER_X `echo $HEIGHT-135|bc`
    
  6. Выполнить ввод:

    xdotool click 1
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...