![Como evitar que o xdotool bloqueie a janela atual após um script?](https://rvso.com/image/38684/Como%20evitar%20que%20o%20xdotool%20bloqueie%20a%20janela%20atual%20ap%C3%B3s%20um%20script%3F.png)
Eu tenho um script BASH simples xdotool
que lê alguns dados de um CSV e os insere em um formulário em algum outro software:
#!/bin/bash
sleep 5
while read -r line
do
a="$(echo $line | awk '{ print $1 }')"
xdotool type $a
xdotool key "$Tab"
done < ./data.csv
aplay Beep.wav
O script funciona conforme o esperado, mas após o bipe, a tela fica bloqueada:
- O mouse se move, mas nenhuma janela pode vê-lo (por exemplo, as dicas de ferramentas não aparecem) e ele não pode clicar em nada, nem mesmo na janela atual.
- As palavras do teclado, mas apenas na janela atual.
- A janela fica trancada dessa maneira por cerca de 5 minutos e, de repente, não fica mais trancada.
CTRL+ALT+F1 me permite mudar de console, mas killall -9 xfce4-terminal
não killall -9 xdotool
interrompeu o bloqueio.
Como posso evitar xdotool
o bloqueio da janela atual após executá-la em um script?
Responder1
Ele emite um sinal sonoro porque está esperando que você clique na janela com a qual deseja interagir. Você não percebeu que o cursor mudou para um símbolo '+'?
Leia a página de manual novamente. Você precisa fornecer um ID de janela (--windoweu ia)
Responder2
Me deparei com essa pergunta bastante antiga procurando uma resposta, porque tenho/tive um problema semelhante. Eu uso o xdotool para digitar automaticamente informações de login em sites (no Firefox).
Vinculei uma combinação de teclas a um script com xbindkeys. O script identifica o nome da janela (também com xdotool), procura uma entrada associada em um arquivo criptografado, carrega as informações de login apropriadas e as digita.
Não vou explicar as complexidades do meu script, a interação do usuário com ele e a maneira como ele insere informações nos campos de entrada. No entanto, resolvi o problemaadicionando um breve sono antes da digitação real.
sleep 0.4
xdotool type ...
Admito que esta é uma solução hackeada, mas parece funcionar. Espero que esta solução possa ajudar alguém que esteja procurando superar esse bug tão frustrante (?), Ou talvez exija que outra pessoa escreva uma resposta melhor.