Como controlar programaticamente os aplicativos encaminhados do X11?

4

Eu gostaria de configurar o X11 Forwarding para executar aplicativos X remotos no servidor e o cliente X11 pode lidar com a interação UX.

No entanto, gostaria de configurar o cliente X11 ou fingir que ele faça a interação do usuário de maneira programática (a partir do script).

Por exemplo, quero executar um aplicativo que requeira alguns cliques do mouse ou interação com o teclado (como instaladores), para que eu possa enviar programaticamente esses cliques ou sinais de pressionamento de teclas do aplicativo até o fim.

É algo possível? Como isso pode ser alcançado ou por onde começar? Ou como eu posso reutilizar / sequestrar o protocolo X11 para injetar minha própria interação não-usuário?

    
por kenorb 31.07.2015 / 13:48

1 resposta

2

Até agora eu encontrei a xdotool ferramenta que pode falsificar a entrada do mouse e do teclado com bastante facilidade.

Alguns exemplos com interação simples com teclado:

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

Exemplo de script com interação com o mouse:

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% &

Outro exemplo: Como enviar o pressionamento de tecla F5 para a primeira janela do Chrome .

Mais exemplos de script, por favor encontre-os em GitHub ou no página oficial .

Você pode instalá-lo a partir do repositório apt como: sudo apt-get install xdotool ou compilar das fontes .

Vinho

Caso o aplicativo X11 seja executado no Wine, você também pode usar Winetricks . Verifique o arquivo de origem (é um script de shell) para obter orientação sobre como controlar os aplicativos usando o Ferramenta AutoHotkey.

Um método mais avançado pode incluir o uso do depurador winedbg e a anexação ao processo:

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

então você pode interagir diretamente usando o depurador (veja: man winedbg para ajuda).

    
por 01.08.2015 / 00:43