LXF154:Xdotool
Olkol (обсуждение | вклад) |
Olkol (обсуждение | вклад) (→Что за движения, чувак) |
||
Строка 128: | Строка 128: | ||
*'''Автоматизация почты''' За несколько щелчков и команду type (см. врезку Виртуальные клавиатуры), можно быстро отправлять по почте сообщение разработчикам Gnome Shell каждый раз, когда вы находите нечто совершенно неинтуитивное. | *'''Автоматизация почты''' За несколько щелчков и команду type (см. врезку Виртуальные клавиатуры), можно быстро отправлять по почте сообщение разработчикам Gnome Shell каждый раз, когда вы находите нечто совершенно неинтуитивное. | ||
− | У вас есть еще что-то? После того, как вы проработаете этот учебник и создадите собственные трюки для экономии времени, поделитесь ими с другими читателями!|Ширина=98%}} | + | У вас есть еще что-то? После того, как вы проработаете этот учебник и создадите собственные трюки для экономии времени, поделитесь ими с другими читателями!|Ширина=98%}}{{Врезка|left|Заголовок= Виртуальные клавиатуры|Содержание= |
− | + | ||
− | + | ||
− | {{Врезка|left|Заголовок= Виртуальные клавиатуры|Содержание= | + | |
На нашем уроке мы занимались событиями для мыши, но xdotool умеет еще и отправлять виртуальные нажатия клавиш: так, | На нашем уроке мы занимались событиями для мыши, но xdotool умеет еще и отправлять виртуальные нажатия клавиш: так, | ||
Строка 152: | Строка 149: | ||
Заметьте, что перевод строки в скрипте тоже делает xdotool, так что вы можете вставить новые строки. Мы использовали наш менеджер окон, чтобы сделать комбинацию Ctrl + Alt + S для запуска mikesig.sh, поэтому из любой программы можно нажать Ctrl + Alt + S и получить мгновенно сгенерированную подпись. Если у вас есть более серьезные задачи, вам такое пригодится, поскольку это работает со всеми видами приложений и оконных менеджеров.|Ширина=50%}} | Заметьте, что перевод строки в скрипте тоже делает xdotool, так что вы можете вставить новые строки. Мы использовали наш менеджер окон, чтобы сделать комбинацию Ctrl + Alt + S для запуска mikesig.sh, поэтому из любой программы можно нажать Ctrl + Alt + S и получить мгновенно сгенерированную подпись. Если у вас есть более серьезные задачи, вам такое пригодится, поскольку это работает со всеми видами приложений и оконных менеджеров.|Ширина=50%}} | ||
− | + | [[Файл:LXF154.tut_xdotool.sh_opt3.jpeg |right |375px|thumb|Просмотрите страницу помощи (“man xdotool”), чтобы получить список всех доступных операций.]] Пишите нам по адресу letters@linuxformat.ru с вашим скриптом, и мы опубликуем выборку из них на очередном LXFDVD. | |
Здесь мы активизируем окно холста GIMP и переходим в точку 100, 100 (X, Y) внутри него. Затем мы устанавливаем левую кнопку мыши вниз, двигаем мышь по диагонали вниз-вправо на 100 пикселей в каждом направлении, а затем устанавливаем кнопку мыши вверх. Другими словами, мы создали робота, который рисует диагональную линию – см. экранный снимок на предыдущей странице. Как и в других примерах, мы здесь включили несколько команд паузы, чтобы не обгонять работу оконного менеджера или обработку в GIMP. (Если ваша машина особенно производительна, измените периоды ожидания от полсекунды до 0,1.) | Здесь мы активизируем окно холста GIMP и переходим в точку 100, 100 (X, Y) внутри него. Затем мы устанавливаем левую кнопку мыши вниз, двигаем мышь по диагонали вниз-вправо на 100 пикселей в каждом направлении, а затем устанавливаем кнопку мыши вверх. Другими словами, мы создали робота, который рисует диагональную линию – см. экранный снимок на предыдущей странице. Как и в других примерах, мы здесь включили несколько команд паузы, чтобы не обгонять работу оконного менеджера или обработку в GIMP. (Если ваша машина особенно производительна, измените периоды ожидания от полсекунды до 0,1.) |
Текущая версия на 11:58, 24 июня 2018
|
|
|
Автоматизация Превращаем сложные манипуляции мышью в простые скрипты
Содержание |
[править] Xdotool: Скрипты для мыши
Любую задачу, исполняемую посредством передвижения и нажатий мышью, можно выполнить с помощью скрипта и xdotool, доказывает Майк Сондерс. Были времена, когда нас уверяли, что компьютеры облегчат нам жизнь. Они, мол, автоматизируют все подряд, а от нас для получения потрясающих результатов потребуется самый мизер усилий. Календарь на стене Башен LXF говорит, что это официальное Будущее (™) наступило; и далеко ли мы уехали? Увы, мы все еще тратим кучу времени на передвижение пластиковой штуковины для перемещения курсора на экране, чтобы ткнуть на неудобные мелкие иконки. Несмотря на все достижения технологий графического интерфейса за многие годы, мы по-прежнему тратим слишком много времени на щелчки мышью для выполнения задач.
Но решение есть, и оно значительно повысит производительность к концу нашего урока. Называется оно xdotool, и, в соответствии с описанием автора, «имитирует ввод с клавиатуры и мыши». Конечно, само по себе это звучит не очень интересно, но давайте думать об этом так: это инструмент командной строки, который действует как виртуальная клавиатура и мышь, позволяя объединить команды управления графическим интерфейсом приложений. Можно двигать курсор мыши, отправлять дисплею щелчки, выбирать заданные окна и даже перемещать окна между рабочими столами. В конечном счете, это позволит собрать задачи, требующие суеты с мышью и клавиатурой, в единый скрипт.
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
[править] Итак, начнем
Скорее всего, пакет xdotool доступен в репозитории вашего дистрибутива; если нет – возьмите его с www.semicomplete.com/projects/xdotool. Зависимости – это обычные библиотеки X, и их не должно быть трудно установить. Установив его, откройте окно терминала и наведите указатель мыши на элемент приложения: меню Редактировать. Но – не нажимайте! Вместо этого введите в терминале:
xdotool click 1
И – вуаля, меню Редактировать открывается, как если бы вы реально нажали кнопку мыши. Здесь xdotool отправляет сигнал нажатия на X Window System (основной графический слой рабочего стола Linux), а это возможно потому, что X был разработан с большой гибкостью. Он мыслит широко и знает, что щелкать можно не только мышью: такие события могут быть вызваны тачпадом, сенсорным экраном, графическим планшетом и другими устройствами. И он достаточно смышлен, чтобы принимать «синтетические» щелчки, выполненные программой типа xdotool.
Так вот, это очень простой пример, но он уже нашел применение. Например, многие люди страдают мышечной болью, особенно вызванной работой с мышью. Используя xdotool, можно настроить окружение рабочего стола или оконного менеджера так, что малоиспользуемый ключ (например, обратный штрих) запускает приведенную команду, тем самым позволяя перемещать мышь правой рукой, а нажимать левой, разделив нагрузку. Обратите внимание, что номер 1 в команде относится здесь к клавише мыши: 1 – левая, 2 – средняя и 3 — правая. Вы можете также использовать 4 для прокрутки вверх виртуального колеса мыши, а 5 – для прокрутки вниз.
Попробуем что-нибудь чуть посложнее. xdotool позволяет перемещать указатель мыши по экрану, используя команду mousemove. На языке системы X Window, экран начинается с верхнего левого угла с координатами X и Y (горизонтальной и вертикальной) 0 и 0. Если разрешение экрана 1024 × 768, то параметры для верхней правой координаты – 1023 (X) и 0 (Y), правой нижней – 1023 (X) и 767 (Y), и т. д.
Переместим-ка мы указатель мыши на кнопку главного меню на рабочем столе и нажмем на него, чтобы открыть. Раскладка вашего рабочего стола может отличаться, так что вам нужно будет подправить координаты, но в нашем случае – Xubuntu, с главным меню в верхней левой части экрана. Попробуйте следующую команду:
xdotool mousemove 0 0 click 1
Здесь вы видите, что мы объединили команды вместе – у нас есть mousemove, затем следуют координаты X и Y, а потом левая кнопка мыши. Это открывает главное меню. Мы на пути к автоматизации нашего рабочего стола! Кое-что, однако, нужно иметь в виду. xdotool просто вслепую выполняет последовательность действий, и не в курсе, является ли это щелчком на чем-то реальном. Знаете ли вы, запуская свою Linux-машину – а загрузка главного меню или загрузчика программы может занять несколько секунд – когда загружаются иконки и ресурсы? Так вот, эти задержки могут влиять на команду xdotool. Очень заманчиво начать описывать чудесные комбинациями движений и щелчков, но если что-то в вашей системе почему-либо притормозится, все может слететь с синхронизации.
- !/bin/bash
xdotool mousemove --sync 1000 10
xdotool click 3
sleep 1
xdotool mousemove_relative --sync 0 80
xdotool click 1
Мы сохранили это в виде batinfo.sh в /usr/bin, так что можем применить настройки клавиатуры Xfce и привязать комбинацию клавиш (Ctrl + Alt + B) к запуску этого скрипта. Большинство рабочих столов и оконных менеджеров позволяют ассоциировать комбинации клавиш с командами – например, для запуска окна терминала; поэтому вы должны быть в состоянии сделать нечто подобное в вашей системе.
Итак, рассмотрим, как это работает. Наша иконка Управление питанием находится в верхней панели, ближе к правой части экрана. Путем проверки мы установили, что мышь для нахождения над ним должна быть на 1000 по оси X и 10 по оси Y. Обратите внимание на опцию --sync в команде mousemove: она говорит, что мы просим X Window System переместить мышь, но подождать, пока не вернется сообщение с подтверждением, что этот шаг был успешным. Так что в принципе, это хорошая идея – использовать --sync.
Затем мы делаем щелчок правой кнопкой мыши, чтобы открыть контекстное меню, но оставляем секунду на время отклика, при помощи команды sleep 1. Это дает нам немного времени, если система занята – например, если происходит загрузка пакета обновлений в фоновом режиме. Контекстное меню мгновенно может не отобразиться, так как процессор и жесткий диск заняты. Поэтому мы ждем секунду, чтобы дать Xfce шанс сделать свою работу. (Возможно, в вашей конкретной системе вы захотите сменить этот параметр на две-три секунды, если ваша машина часто загружена.)
Далее, там появилась новая команда: mousemove_relative. Как следует из названия, она просто перемещает указатель относительно текущей позиции, а не в абсолютное положение на экране. В нашем случае информация по уровню зарядки в контекстном меню находится на 80 пикселей вниз от того, где мы активировали меню, так что мы движемся к этой точке. Это дает нам дополнительную гибкость: если мы куда-нибудь передвинем иконку заряда аккумулятора, нужно будет изменить только первую команду mousemove, так как все остальное останется по отношению к ней прежним.
[править] Продвинутые применения
Способность xdotool нажать на кнопку по запрограммированным координатам – это здорово, но не так уж полезно, если перед выполнением наших действий окно нужно активировать вручную.
Допустим, у вас есть отличный музыкальный проигрыватель, который всегда работает в фоновом режиме, а иногда всплывает как окно для выполнения операции (например, переключения на другой плей-лист). Некоторые медиа-приложения допускают управление ими из командной строки, что позволяет отображать комбинации клавиш в окне менеджера команды, но это средство есть не у всех. Вместо того, чтобы каждый раз вручную запускать ваш медиа-плейер, а затем скрипт xdotool (проще сразу нажать вручную), можно велеть xdotool автоматически переключаться на соответствующие окна с помощью команд search и windowactivate.
Например, мы только что открыли медиа-плейер Parole на нашем рабочем столе и оставили его работать в фоновом режиме,
пока мы занимаемся своим делом в терминале. Мы введем команду
xdotool Parole “Firefox” windowactivate
Это заставит Parole выйти на передний план. Попробуйте это на своей машине, заменив Parole на что-нибудь. Здесь xdotool работает с оконным менеджером, чтобы найти определенные окна – он ищет первое окно со словом “Parole” в названии. Вы можете заменить это любым другим, а если совпадения нет, ничего не произойдет.
Конечно, окно Parole могло быть в любом месте экрана, и поэтому мы не можем начать нашу серию нажатий на определенном месте. Надо навести курсор мыши на Parole и начать работать оттуда.
Как вы уже догадались, авторы xdotool подумали об этом, так что...
xdotool search “Parole” windowactivate --sync mousemove --window %1 0 0
Найдя и активировав окно Parole, мы выполняем команду mousemove, но на сей раз на месте окна 1 из результатов поиска (т. е. первого окна, в заголовке которого есть Parole – другие вам, вероятно, никогда не понадобятся).
Мы переводим курсор в точку 0 0 – это координаты X и Y для верхнего левого угла окна. Отлично! Теперь можно писать скрипт, использующий смещение координат от данной точки, нажатия кнопок, открытие меню, при желании – проверку флажков, независимо от того, где первоначально было окно программы.
Если вам нудно, что ваши окна разбросаны в произвольных местах, xdotool переместит их за вас. Попробуйте команду
xdotool search “Parole” windowactivate --sync windowmove 100 200
Она найдет Parole и переместит его окна на 100 пикселей по ширине экрана и на 200 вниз. Вы можете вынуть часть windowactivate --sync и осуществлять передвижение в фоновом режиме, если хотите. А можно измененить размеры окна:
xdotool search “Parole” windowsize 500 200
Это находит Parole и изменяет его до 500 пикселей в ширину, 200 по высоте. Вы даже можете переместить окно на другое рабочее место / виртуальный рабочий стол таким образом:
xdotool search “Parole” set_desktop_for_window 0
Просто измените число в конце зависимости на требуемый рабочий стол. Отметим, что в типичной манере программирования, 0 – это первый рабочий стол, 1 – второй, и т. д.
[править] Что за движения, чувак
Щелчки исполняются хорошо; ну, а если мы хотим выполнить операцию, где кнопка мыши всегда удерживается, такую как щелкнуть-и-перетащить?
К счастью, xdotool позволяет и это, предлагая более универсальную альтернативу – команду click: mousedown и mouseup. Давайте попробуем это, запустив GIMP, выбрав в меню Файл > Создать и создав новый рисунок с размером по умолчанию (заголовок его окна должен содержать «Без названия»).
Выберите инструмент Карандаш из окна Панель инструментов GIMP, а затем откройте терминал и введите следующий текст в файле под названием test.sh:
xdotool search “Untitled” windowactivate --sync mousemove --window %1 100 100
sleep 0.5
xdotool mousedown 1
sleep 0.5
xdotool mousemove_relative --sync 200 200
sleep 0.5
xdotool mouseup 1
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить
Здесь мы активизируем окно холста GIMP и переходим в точку 100, 100 (X, Y) внутри него. Затем мы устанавливаем левую кнопку мыши вниз, двигаем мышь по диагонали вниз-вправо на 100 пикселей в каждом направлении, а затем устанавливаем кнопку мыши вверх. Другими словами, мы создали робота, который рисует диагональную линию – см. экранный снимок на предыдущей странице. Как и в других примерах, мы здесь включили несколько команд паузы, чтобы не обгонять работу оконного менеджера или обработку в GIMP. (Если ваша машина особенно производительна, измените периоды ожидания от полсекунды до 0,1.)
Подытожим: на нашем уроке мы изучили различные способы взаимодействия с графическим интерфейсом – перемещение мыши, отправка виртуальных щелчков и перемещений и поиск конкретного окна.
Соберите эти действия вместе, изучите побольше возможностей на странице руководства xdotool, и вы сможете автоматизировать практически все на рабочем столе, высвободив время на более важные вещи. Эй, кто хочет сыграть во Frozen Bubble?
- Метамодернизм в позднем творчестве В.Г. Сорокина
- ЛитРПГ - последняя отрыжка постмодерна
- "Ричард III и семиотика"
- 3D-визуализация обложки Ridero создаем обложку книги при работе над самиздатом.
- Архитектура метамодерна - говоря о современном искусстве, невозможно не поговорить об архитектуре. В данной статье будет отмечено несколько интересных принципов, характерных для построек "новой волны", столь притягательных и скандальных.
- Литература
- Метамодерн
- Рокер-Прометей против изначального зла в «Песне про советскую милицию» Вени Дркина, Автор: Нина Ищенко, к.ф.н, член Союза Писателей ЛНР - перепубликация из журнала "Топос".
- Как избавиться от комаров? Лучшие типы ловушек.
- Что делать если роблокс вылетает на windows
- Что делать, если ребенок смотрит порно?
- Почему собака прыгает на людей при встрече?
- Какое масло лить в Задний дифференциал (мост) Visco diff 38434AA050
- О чем может рассказать хвост вашей кошки?
- Верветки
- Отчетность бюджетных учреждений при закупках по Закону № 223-ФЗ
- Срок исковой давности как правильно рассчитать
- Дмитрий Патрушев минсельхоз будет ли преемником Путина
- Кто такой Владислав Поздняков? Что такое "Мужское Государство" и почему его признали экстремистским в России?
- Как правильно выбрать машинное масло в Димитровграде?
- Как стать богатым и знаменитым в России?
- Почему фильм "Пипец" (Kick-Ass) стал популярен по всему миру?
- Как стать мудрецом?
- Как правильно установить FreeBSD
- Как стать таким как Путин?
- Где лучше жить - в Димитровграде или в Ульяновске?
- Почему город Димитровград так называется?
- Что такое метамодерн?
- ВАЖНО! Временное ограничение движения автотранспортных средств в Димитровграде
- Тарифы на электроэнергию для майнеров предложено повысить