Executando o wmctrl do bash

3

Depois de jogar um pouco do terminal com wmctrl , agora vem o próximo passo. Execute wmctrl de um script bash.

Eu consegui executar wmctrl em um bash quando ele está completamente sozinho.

Exemplo:

#!/bin/bash

 SOUDIR=/usr/bin
 echo "$SOUDIR"
 $SOUDIR/wmctrl -i -r 0x040000b3 -e 0,0,0,500,800

Mas quando eu adiciono o código de linha do firefox, não funciona. Eu pensei que adicionar tempo de sono funcionaria, mas eu estava errado.

Este é o código atual:

#!/bin/bash

firefox http://www.google.de
sleep 30s
SOUDIR=/usr/bin
echo "$SOUDIR"
$SOUDIR/wmctrl -i -r 0x040000b3 -e 0,0,0,500,800

Como redimensionar o navegador usando este código bash?

Eu sou novo no bash e no Ubuntu.

    
por kaka 24.06.2015 / 13:55

2 respostas

1

OK, alguns pontos:

  • Você não precisa do /usr/bin adicionado. A Shell encontrará o wmctrl sozinho. Isso é para casos muito específicos que podem envolver portabilidade.
  • Adicione oe comercial no final do comando firefox . O script continuará somente se o comando anterior sair. Como o firefox não sai, o script espera por ele.
  • Como Oli apontou, a melhor maneira é usar o nome da classe. Eu fiz vários scripts com wmctrl , onde encontrei o ID hexadecimal da janela referenciando o nome da classe.

Pessoalmente, eu faria assim:

#!/bin/bash
firefox http://www.google.de &
sleep 3
WM_ID=$(wmctrl -lx | awk '~/Navigator.Firefox/ {print }')
wmctrl -i -r $WM_ID -e 0,0,0,500,800

Aqui nós abrimos o firefox, vamos rodar em segundo plano, então extraímos o ID hexadecimal da janela que combina com a classe Navigator.Firefox . Em wmctrl -lx o campo 3 é wm_class e o campo 1 é hexadecimal. awk nos ajuda a extrair o campo 1 aqui. Finalmente, referenciamos esse id numérico, dentro da declaração final do wmctrl

    
por Sergiy Kolodyazhnyy 24.06.2015 / 17:37
0

Parece provável que o comando firefox impediria a execução do script até que ele fosse encerrado. Basta enviá-lo para o segundo plano e seu script pode progredir:

firefox http://www.google.de &

Em uma nota tangencial, você também pode querer olhar para o -no-remote para o Firefox. Isso interromperá a interação do comando com quaisquer instâncias do Firefox existentes em seu DISPLAY.

Enquanto estamos falando de tangentes, o comando firefox tem alguns argumentos auxiliares that --along with -no-remote - pode ajudar você a segmentar a nova janela.

Por exemplo, você pode definir um nome de classe específico e, em seguida, ter o Compiz lidando com o redimensionamento automático . E wmctrl -x <WM_CLASS> permitirá segmentar uma turma em vez de uma ID. Provavelmente mais robusto do que os nomes ou IDs de janelas de segmentação também.

    
por Oli 24.06.2015 / 14:13