Come ottenere informazioni precise sulla finestra (dimensioni, ecc.) In Linux (X)?


22

Come posso ottenere informazioni precise sulla finestra in Linux? So che posso usare wmctrl per ottenere le dimensioni di una finestra, ma le dimensioni effettive della finestra possono variare a causa delle decorazioni delle finestre. Ho bisogno delle seguenti informazioni e metodi:

* 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

Quale sarebbe il modo migliore per farlo?

Grazie in anticipo!


Se sei più interessato al lato Python, possiamo migrarlo sul nostro sito affiliato sulla programmazione, StackOverflow.com. Facci sapere.
Gnoupi,

@Gnoupi: grazie, ma in realtà questo è un messaggio incrociato di SO, come suggerito da un utente potrei ottenere una risposta migliore qui. La domanda originale è su stackoverflow.com/questions/3233660/… .
mellort,

va bene, ho capito. In questo caso, penso che la parte Python della tua domanda possa essere modificata. Molto probabilmente le risposte su SU useranno altri comandi, non la programmazione. La domanda su SO dovrebbe probabilmente concentrarsi sul chiedere come farlo in Python.
Gnoupi,

Risposte:


26

Esistono alcuni programmi da riga di comando che potrebbero aiutare:

  • xwininfo: Ti dà la dimensione della finestra escludendo la decorazione e la posizione assoluta (sullo schermo) e relativa (all'area per le finestre)
  • xdpyinfo: Questo fornisce molte più informazioni sul tuo dispositivo schermo, di quante tu abbia mai voluto sapere. Ma ha da qualche parte nell'output qualcosa come screen: #0seguito da dimension: 1024x768.

C'è un modo per ottenere informazioni tra cui la decorazione?
Victor

6

> dimensioni precise della finestra

L'esempio seguente (funzionerà almeno in sh, bash e zsh) stamperà la geometria della finestra con e senza cornice per tutte le finestre con "KWrite" da qualche parte nel titolo.

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

> preciso spazio disponibile sullo schermo (esclusi i pannelli come gnome-panel)

xrandr

Per esempio:

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

Uscita nel mio caso:

4400 x 2560

Non sei sicuro di come escludere i pannelli: se hai più di un monitor, possono trovarsi anche al centro dello schermo virtuale, quindi la geometria dello schermo senza pannelli può essere più complicata dello "spazio disponibile sullo schermo".

> la possibilità di impostare una finestra di una certa dimensione, comprese le decorazioni

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

Leggi il README di wmiface per ulteriori comandi possibili.


2
wmiface non è impacchettato con tutte le (qualsiasi?) distro. Sono stato in grado di installare su Mint usando il pacchetto ubuntu da qui: kde-apps.org/content/show.php?content=40425 Il file README menzionato può essere trovato qui: gitorious.org/wmiface/wmiface/source/…
slinkp

Vedi la seconda parte di questo commento unix.stackexchange.com/a/156349/84607 per un altro modo per ottenere la geometria completa, comprese le decorazioni, usando una combinazione di xwininfo, xdotool e xprop.
sbattere le palpebre il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.