J'ai essayé de déterminer la taille d'une fenêtre à utiliser dans un petit script. Ma technique actuelle utilise wmctrl -lG
pour trouver les dimensions. Cependant, le problème est le suivant:
Les chiffres x et y donnés correspondent au coin supérieur gauche de la décoration de la fenêtre, tandis que la hauteur et la largeur concernent uniquement la zone de contenu. Cela signifie que si les décorations de fenêtre ajoutent 20 pixels de hauteur et 2 pixels de largeur, wmctrl signalera une fenêtre comme étant de 640 x 480, même si elle prend 660 x 482 à l'écran. C'est un problème car l'étape suivante de mon script serait d'utiliser cette zone pour indiquer à ffmpeg d'enregistrer l'écran. Je voudrais éviter de coder en dur la taille des décorations de fenêtre de ma configuration actuelle.
Ce qui conviendrait est une méthode pour obtenir la taille des décorations de fenêtre afin que je puisse les utiliser pour déterminer la position de la zone de contenu 640x480, ou un moyen d'obtenir directement la position de la zone de contenu, et non celle des décorations de fenêtre. .
Réponses:
Le script suivant vous donnera les coordonnées de l'écran en haut à gauche et la taille de la fenêtre (sans aucune décoration). . . .
xwininfo -id $(xdotool getactivewindow)
contient assez d'informations pour vous.la source
xdotool getactivewindow
renvoie l'identifiant de fenêtre du cadre du gestionnaire de fenêtres (qui comprend la décoration) plutôt que la fenêtre cliente qu'il contient.xdotool getactivewindow getwindowgeometry
La réponse acceptée peut être étendue pour obtenir la fenêtre entière:
Bien que cela soit facile, il s’avère que cela ne fonctionne pas avec Unity dans Ubuntu 14.04 car les informations relatives sont à 0. J’ai demandé Obtenir toutes les dimensions de la fenêtre (y compris les décorations) dans Unity et obtenir une bonne réponse. Voici comment j'ai utilisé cette réponse:
Cette seconde méthode fonctionne à la fois dans Unity et Xfce et devrait également fonctionner dans Gnome.
la source
aw=`xdotool getactivewindow`
plus que le haut pour éviter de raccrocher à l'appel xwininfo. C’est bon à savoir car j’envisage de passer à Unity, où je ne parviens pas à faire fonctionner wmiface sans segfault.aw
définition manquante . Je vais modifier la réponse maintenant pour ajouter cette ligne.h
. Semble que la barre de titre est déjà incluse dans la hauteur qui revientxwininfo
.Un moyen beaucoup plus simple d’obtenir la taille et la position de la fenêtre:
la source
La réponse acceptée n'inclut pas explicitement la décoration de fenêtre. Pour ceux qui recherchent toujours comment obtenir la géométrie, y compris toutes les décorations, vous pouvez utiliser wmiface selon le titre de cette question, selon cette autre question https://superuser.com/questions/164047/how-to-get-accurate-window -information-dimensions-etc-in-linux-x . Exemple:
Ceci retourne la géométrie et la position par rapport au haut à gauche comme ceci:
wmiface ne semble pas venir avec toutes les distributions linux (je n'ai pas trouvé de paquet le fournissant sur Mint ou Ubuntu) mais j'ai pu l'installer à partir des paquets ici: http://kde-apps.org/content/show .php? content = 40425
Et cela n’a pas de documentation ni même
--help
, mais le fichier README est ici:https://gitorious.org/wmiface/wmiface/source/ea941eeb2076124734f6a3d3079326c826b462d7:README
la source
wmiface activeWindow
570x434 + 870 + 31 $ xdotoolxdotool getactivewindow
Fenêtre getwindowgeometry 6291772 Position: 878,77 (écran: 0) Géométrie: 562x407Utiliser xdotool:
sleep 3s && xdotool getactivewindow
, vous avez 3 secondes pour ouvrir votre fenêtrexdotool getwindowgeometry $WINDOW_ID
xdotool getwindowgeometry -shell $WINDOW_ID
la source
En combinant les réponses sur cette page, j'ai utilisé ceci:
Exécutez one-liner puis, dans les 3 secondes qui suivent, cliquez sur la fenêtre pour laquelle vous souhaitez connaître la position et la géométrie.
la source