Je voudrais obtenir la taille de la fenêtre actuelle à partir d'un script Shell ...
Vraiment pas grand chose à dire ... Je préférerais utiliser wmctrl.
wmctrl -lG
Vous donnera quelque chose comme:
oli@bert:~$ wmctrl -lG
0x0384c0d5 -1 1590 1030 330 170 bert N/A
0x01200023 -1 0 0 3840 1200 bert x-nautilus-desktop
0x01000003 -1 3840 2352 1920 24 bert Bottom Expanded Edge Panel
0x01000028 -1 0 2352 1920 24 bert Bottom Expanded Edge Panel
0x0500003e 0 676 252 1404 1015 bert Chromium
0x02e00021 0 3860 160 1361 1084 bert Liferea
0x02000047 0 6650 940 506 683 bert Social broadcast messages
0x04600004 0 4546 460 1263 833 bert oli@bert: ~
Avec cela, vous pouvez grep
et cut
sur ces valeurs afin de conserver les valeurs géométriques (colonnes 3-6).
Pour citer page de manuel , vous devez donc comprendre exactement ce que sont les colonnes:
- l
Répertorie les fenêtres gérées par le gestionnaire de fenêtres. Une ligne est sortie pour chaque fenêtre, la ligne étant divisée en colonnes séparées par des espaces. La première colonne contient toujours l'identité de la fenêtre sous forme d'entier hexadécimal et la deuxième colonne contient toujours le numéro du bureau (-1 sert à identifier une fenêtre permanente). Si l'option -p est spécifiée, la colonne suivante contiendra le PID de la fenêtre sous forme d'entier décimal. Si l'option -G est spécifiée , quatre colonnes entières suivront: décalage x, décalage y, largeur et hauteur. La colonne suivante contient toujours le nom de l'ordinateur client. Le reste de la ligne contient le titre de la fenêtre (éventuellement avec plusieurs espaces dans le titre).
Je pense que wmctrl ne dispose pas d’option pour rechercher directement la fenêtre active.
Si quelqu'un sait comment faire, je suis intéressé de savoir ..
Cela dit, voici quelques scripts qui affichent la taille de la fenêtre active.
C’est: wmctrl + xdotool ... (ne pas utiliser sed).
id=$(xdotool getactivewindow)
wmctrl -lpG | while read -a a; do w=${a[0]}; if (($((16#${w:2}))==id)) ; then echo -n "${a[5]} ${a[6]}"; break; fi; done
C'est: xwininfo + xdotool + sed
xwininfo
fait partie de x11-utils
set $(xwininfo -id $(xdotool getactivewindow) \
|sed -n -e "s/^ \+Width: \([0-9]\+\).*/\1/p" \
-e "s/^ \+Height: \([0-9]\+\).*/\1/p")
echo -n "$1 $2"
Utilisez xprop
ou xwininfo
. Les deux viennent par défaut, aucune installation nécessaire
Les deux commandes tournent le curseur en carré/croix pour permettre de sélectionner une fenêtre particulière.
$ xprop _NET_WM_OPAQUE_REGION
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
Alternativement, on peut spécifier une fenêtre sur la ligne de commande sous forme XID
$ xprop _NET_WM_OPAQUE_REGION -id 83886090
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 984, 377
$ xwininfo -id 83886090 | awk -F ':' '/Width/ || /Height/{print $2}'
984
377
En particulier, xwininfo
a été activement utilisé par moi pour les scripts, comme pour les questions AskUbuntu:
J'ai trouvé tput cols
travailler assez bien!
Les scripts shell ne connaissent ni ne s’intéressent à Windows. Au mieux, ils fonctionnent dans un terminal (qui peut ou non être affiché dans une fenêtre). Si vous voulez obtenir la largeur et la hauteur du terminal en caractères, utilisez l'utilitaire stty.