web-dev-qa-db-fra.com

Comment puis-je trouver l'emplacement (sur le bureau) d'une fenêtre sur la ligne de commande?

J'essaie d'écrire un petit script pour m'aider à gérer mes fenêtres via des raccourcis clavier.

Pour pouvoir faire ce que je veux, je dois pouvoir trouver l'emplacement et la taille actuels de la fenêtre "active" (focalisée). Par emplacement, j'entends les coordonnées X, Y de la fenêtre sur le bureau et, par taille, la hauteur et la largeur de la fenêtre.

Existe-t-il un utilitaire de ligne de commande capable d'extraire ces informations?

19
TM.

Vous pouvez obtenir toutes les informations pour la fenêtre active en cours en utilisant cette commande:

xwininfo -id $(xprop -root | awk '/_NET_ACTIVE_WINDOW\(WINDOW\)/{print $NF}')

ou

xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)

Il suffit d'analyser la sortie pour obtenir les coordonnées dont vous avez besoin. Voici quelques commandes utiles lors de l'interaction avec Windows:

  • xwininfo vous donnera la géométrie relative et absolue.
  • xprop vous dira beaucoup d'informations, y compris si la fenêtre est active, mais pas sa géométrie
  • xdpyinfo vous donnera aussi l'id de la fenêtre active, mais pas d'informations supplémentaires.
  • wmctrl vous fournira une liste d'informations sur les fenêtres et vous permettra de sélectionner la fenêtre active à modifier, mais pas d'informations.

Par exemple, pour changer le titre de la fenêtre active en "Nouveau nom":

wmctrl -r :ACTIVE: -N "New Name"

Ou pour changer la position de la fenêtre active:

wmctrl -r :ACTIVE: -e 0,20,20,200,400

Considérez wmctrl si vous devez simplement changer quelque chose de simple, comme la géométrie de la fenêtre. Pensez à utiliser les autres scripts mentionnés ci-dessus uniquement si vous souhaitez effectuer d'autres tâches plus complexes.

22

Avec "xdotool", vous pouvez facilement interagir avec Windows en utilisant des événements au clavier ou à la souris.

Exemple d'envoi d'un CtrlC séquence à la fenêtre active:

xdotool getwindowfocus key ctrl+c # Sends CTRL+C to the current window.

Si vous avez vraiment besoin de la position de la fenêtre:

eval $(xdotool getmouselocation --Shell); echo $X $Y

Pour plus d'actions/options, consultez page de manuel .

8
João Pinto