xdotool: Comando desconhecido: 21043361

2

Até onde eu sei, a linha de código abaixo deve colocar em foco a janela aberta do nautilus

xdotool windowactivate 'xdotool search --onlyvisible --class nautilus'

Mas estou recebendo o erro

xdotool: Unknown command: 21043361

    
por Hailwood 30.10.2012 / 21:38

2 respostas

3

Eu acho que o que está acontecendo é que o comando xdotool interno está relatando vários IDs de janela. Portanto, o comando externo vê algo como xdotool windowactivate 12345678 21043361 e não sabe o que fazer com o segundo número.

Se você não se importar com a janela aberta do Nautilus ativada, poderá selecionar a primeira:

xdotool windowactivate $(xdotool search --onlyvisible --class nautilus | head -n 1)

Se você se importa, você pode querer selecionar mais com --title ou --maxdepth .

Para excluir a janela raiz, que é fornecida pelo Nautilus, isso deve funcionar:

xdotool windowactivate $(xdotool search --onlyvisible --class nautilus |
                         grep -vxF $(xwininfo -int -size -root |
                                     sed -n 's/.*Window id: *\([0-9]\+\).*//p') |
                         head -n 1)
    
por Gilles 30.10.2012 / 23:27
3

autor do xdotool aqui.

O que você está vendo é muito provável que haja dois IDs de janela. Você poderia tentar descobrir exatamente qual id da janela era o que queria, mas na maioria dos casos pode usar apenas os recursos 'command chaining' e 'window stack' - veja "WINDOW STACK" e "COMMAND CHAINING" na página man do xdotool.

A solução mais simples para sua pergunta é fazer a pesquisa xdotool e passar os ids da janela diretamente para o comando windowactivate, assim:

xdotool search --onlyvisible --class nautilus windowactivate

O item acima faz uma pesquisa, salva os resultados na pilha de janelas e, em seguida, chama windowactivate, que sem argumentos se aplica à primeira janela da pilha de janelas (também conhecida como '% 1'). Pense nisso como uma maneira de canalizar os resultados da pesquisa para outros comandos xdotool dentro da mesma linha de comando.

Aqui está outro exemplo para obter os títulos de todas as janelas do google chrome, usando a pilha de janelas '% @' que significa 'todas as janelas na pilha' (ao contrário de% 1,% 2, etc., que são janelas específicas na pilha )

% xdotool search --onlyvisible --class chrome getwindowname %@   
asdf - Google Search - Google Chrome
CNN.com - Breaking News, U.S., World, Weather, Entertainment & Video News - Google Chrome
Ask Ubuntu - Google Chrome
Google Chrome

Em geral, qualquer comando que emita um id de janela (search, selectwindow, getactivewindow, etc) preencherá a pilha de janelas para uso com comandos encadeados. Outro exemplo, matando uma janela (geralmente sai de uma aplicação) clicando nela:

% xdotool selectwindow windowkill
    
por Jordan Sissel 01.11.2012 / 00:06