xdotool
Подробнее
- Создатель
- Jordan Sissel
- Год
- Тип
- Утилита командной строки
- Лицензия
- BSD-3-Clause
- Исходный код
- github.com/jordansissel/xdotool
Утилита командной строки, выдающая себя за пользователя: нажимает клавиши, двигает мышь, находит, фокусирует и перемещает окна X11 из shell-скрипта.
Джордан Сиссел, позже известный по Logstash, выпустил xdotool в 2007 году как способ управлять программами, у которых нет собственного интерфейса командной строки. xdotool key ctrl+alt+t посылает комбинацию клавиш, xdotool type 'text' печатает строку, xdotool mousemove 400 300 click 1 перемещает курсор и кликает, а xdotool search --name Firefox windowactivate находит окно и даёт ему фокус. Команды можно соединять в одной строке, а библиотека libxdo делает то же из C. Ввод идёт через расширение XTEST, подающее события на сервер так, будто они пришли с клавиатуры, а управление окнами — через свойства EWMH, поэтому утилита работает с любым современным оконным менеджером.
Две ловушки хорошо известны. С --window клавиши отправляются через XSendEvent, и многие программы их игнорируют, поскольку событие помечено как синтетическое; без этого флага всё попадает в то окно, которое в момент запуска скрипта оказалось в фокусе, — так пароль время от времени набирали в окне чата. В Wayland аналога XTEST нет, и преемникам вроде ydotool приходится работать через uinput ядра со всеми вытекающими требованиями к привилегиям.