Comment obtenir des informations de fenêtre précises (dimensions, etc.) sous Linux (X)?

22

Comment obtenir des informations de fenêtre précises sous Linux? Je sais que je peux utiliser wmctrl pour obtenir la taille d'une fenêtre, mais la taille réelle de la fenêtre peut varier en raison des décorations de la fenêtre. J'ai besoin des informations et méthodes suivantes:

* precise window dimensions
* precise available screen space (excluding panels like gnome-panel)
* the ability to set a window to be a certain size, including decorations

Quelle serait la meilleure façon de faire cela?

Merci d'avance!

mellort
la source
Si vous êtes plus intéressé par le côté python, nous pouvons le migrer vers notre site frère sur la programmation, StackOverflow.com. Faites le nous savoir.
Gnoupi
@Gnoupi: merci, mais il s'agit en fait d'un article croisé de SO, car un utilisateur a suggéré que je pourrais obtenir une meilleure réponse ici. La question d'origine se trouve sur stackoverflow.com/questions/3233660/… .
mellort
OK je vois. Dans ce cas, je pense que la partie python de votre question peut être modifiée. Les réponses sur SU utiliseront très probablement d'autres commandes, pas de programmation. La question sur SO devrait probablement se concentrer sur la façon de le faire en python.
Gnoupi
Obtenez la dimension de la fenêtre avec des décorations: unix.stackexchange.com/questions/14159/…
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件

Réponses:

26

Il existe des programmes en ligne de commande qui pourraient vous aider:

  • xwininfo: Il vous donne la taille de la fenêtre hors décoration et la position absolue (à l'écran) et relative (à la zone des fenêtres)
  • xdpyinfo: Cela donne beaucoup plus d'informations sur votre écran que vous ne voulez en savoir. Mais il a quelque part dans la sortie quelque chose comme screen: #0suivi de dimension: 1024x768.
Antwortgenossenschaft
la source
Existe-t-il un moyen d'obtenir des informations, y compris la décoration?
Victor
6

> dimensions précises des fenêtres

L'exemple suivant (fonctionnera au moins en sh, bash et zsh) imprimera la géométrie des fenêtres avec et sans cadre pour toutes les fenêtres avec "KWrite" quelque part dans le titre.

windows="$(wmiface findNormalWindows "KWrite" "" "" "" "" "")"
for window in $(echo $windows); do
{
  echo $window
  wmiface framePosition $window
  wmiface frameSize $window
  wmiface windowPosition $window
  wmiface windowSize $window
  echo
} done

> espace d'écran disponible précis (à l'exclusion des panneaux comme le panneau gnome)

xrandr

Par exemple:

xrandr | head -n1 | cut -d, -f2 | cut -d" " -f3-5

Sortie dans mon cas:

4400 x 2560

Vous ne savez pas comment exclure les panneaux - si vous avez plus d'un moniteur, ils peuvent être même au milieu de l'écran virtuel, donc la géométrie de l'écran sans panneaux peut être plus compliquée que «l'espace d'écran disponible».

> la possibilité de définir une fenêtre pour une certaine taille, y compris les décorations

wmiface setFrameGeometry $window $x $y $width $height

Lisez wmiface README pour encore plus de commandes possibles.

Lissanro Rayen
la source
2
wmiface n'est pas fourni avec toutes (toutes?) les distributions. J'ai pu installer sur Mint en utilisant le paquet ubuntu à partir d'ici: kde-apps.org/content/show.php?content=40425 Le fichier README mentionné peut être trouvé ici: gitorious.org/wmiface/wmiface/source/…
slinkp
Voir la deuxième partie de ce commentaire unix.stackexchange.com/a/156349/84607 pour une autre façon d'obtenir la géométrie complète, y compris les décorations en utilisant une combinaison de xwininfo, xdotool et xprop.
slinkp