Как программно контролировать пересылаемые приложения X11?

Я хотел бы настроить X11 Forwarding для запуска удаленных X-приложений на сервере, а клиент X11 может обрабатывать взаимодействие UX.

Однако я хотел бы настроить клиент X11 или подделать его для фактического взаимодействия с пользователем программным образом (из сценария).

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

Это возможно? Как это можно достичь или с чего начать? Или как я могу повторно использовать / запретить X11-протокол для ввода моего собственного взаимодействия с пользователем?

До сих пор я нашел инструмент xdotool , который легко подделывал ввод с мыши и клавиатуры.

Некоторые примеры с простым взаимодействием с клавиатурой:

 xdotool key a xdotool key Down xdotool key Tab xdotool key "Return" xdotool key "Control_L+t" xdotool key Alt+1 xdotool key ctrl+v xdotool key Super xdotool key KP_Enter xdotool key ctrl+Page_Up xdotool key ctrl+U005C xdotool key ctrl+shift+e xdotool key --delay 1000 shift+minus # for underscore xdotool key --clearmodifiers shift+Insert xdotool key --clearmodifiers --window 0x2600006 alt+1 0 9 8 7 6 5 4 3 

Пример скрипта с взаимодействием с мышью:

 WINDOWID=$(xdotool selectwindow) xdotool set_window --overrideredirect 1 $WINDOWID windowunmap $WINDOWID windowmap $WINDOWID xdotool windowsize $WINDOWID 10 100% # Set behaviors xdotool behave $WINDOWID mouse-enter windowfocus windowsize --usehints 80 100% & xdotool behave $WINDOWID mouse-leave windowsize 4 100% & 

Другой пример: как отправить нажатие клавиши F5 в первое окно Chrome .

Другие примеры скриптов можно найти в GitHub или на официальной странице .

Вы можете установить его либо из репозитория apt, например: sudo apt-get install xdotool или скомпилировать из источников .


Вино

Если приложение X11 запущено под Wine, вы также можете использовать Winetricks . Проверьте исходный файл (это сценарий оболочки) для руководства по управлению приложениями с помощью инструмента AutoHotkey.

Более продвинутый метод может включать использование отладчика winedbg и присоединение к процессу:

 $ winedbg Wine-dbg>info process 00000008 3 'terminal.exe' Wine-dbg>attach 8 0xf7709c0e __kernel_vsyscall+0xe in [vdso].so: int $0x80 

то вы можете напрямую взаимодействовать с помощью отладчика (см.: man winedbg для справки).