Après avoir joué un peu depuis le terminal avec wmctrl
, vient maintenant l’étape suivante. Exécutez wmctrl
à partir d'un script bash.
Je parviens à exécuter wmctrl
dans une bash quand il est complètement seul.
Exemple:
#!/bin/bash
SOUDIR=/usr/bin
echo "$SOUDIR"
$SOUDIR/wmctrl -i -r 0x040000b3 -e 0,0,0,500,800
Mais lorsque j'ajoute le code de ligne firefox, cela ne fonctionne pas. Je pensais que l'ajout de temps de sommeil marcherait mais je me suis trompé.
C'est le code actuel:
#!/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
Comment redimensionner le navigateur web en utilisant ce code bash?
Je suis nouveau à bash et Ubuntu.
OK quelques points:
/usr/bin
ajouté. Shell trouvera wmctrl par lui-même. Cela concerne des cas très spécifiques pouvant impliquer la portabilité.firefox
. Le script ne se poursuivra que si la commande précédente est sortie. Puisque Firefox ne se ferme pas, le script l’attend.wmctrl
où je trouve l'id hex de la fenêtre en référençant le nom de la classe.Personnellement je le ferais de cette façon:
#!/bin/bash
firefox http://www.google.de &
sleep 3
WM_ID=$(wmctrl -lx | awk '$3~/Navigator.Firefox/ {print $1}')
wmctrl -i -r $WM_ID -e 0,0,0,500,800
Ici, nous ouvrons firefox, le laissons fonctionner en arrière-plan, puis nous extrayons l'id hex de la fenêtre qui correspond à la classe Navigator.Firefox
. Dans wmctrl -lx
, le champ 3 est wm_class et le champ 1, identificateur hexadécimal. awk nous aide à extraire le champ 1 ici. Enfin, nous référençons cet identifiant numérique, dans la déclaration finale de wmctrl
Il semble probable que la commande firefox
bloque la progression du script jusqu'à sa fermeture. Poussez-le simplement en arrière-plan et votre script peut progresser:
_firefox http://www.google.de &
_
Sur une note tangentielle, vous pouvez également consulter -no-remote
pour Firefox. Cela empêchera la commande d'interagir avec toutes les instances de Firefox existantes dans votre DISPLAY.
Pendant que nous parlons de tangentes, la commande firefox
a quelques arguments d'assistance que --along with _-no-remote
_— peut vous aider à cibler la nouvelle fenêtre.
Par exemple, vous pouvez définir un nom de classe spécifique puis laisser Compiz gérer le redimensionnement automatiquement . Et _wmctrl -x <WM_CLASS>
_ vous permettra de cibler une classe plutôt qu'un identifiant. Probablement plus robuste que le ciblage de noms ou d'identifiants de fenêtre.