Come posso trovare la posizione (sul desktop) di una finestra sulla riga di comando?

18

Sto provando a scrivere un piccolo script per aiutare a gestire le mie finestre tramite le scorciatoie da tastiera.

Per fare ciò che voglio, devo essere in grado di trovare la posizione corrente e la dimensione della finestra "attiva" (focalizzata). Per posizione, intendo le coordinate X, Y della finestra sul desktop e per dimensione intendo l'altezza e la larghezza della finestra.

Esiste un'utilità della riga di comando in grado di recuperare queste informazioni?

    
posta TM. 07.01.2011 - 22:59

2 risposte

22

Puoi ottenere tutte le informazioni per la finestra attiva corrente usando questo comando:

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

o

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

Basta analizzare l'output per le coordinate necessarie. Ecco alcuni comandi utili quando si interagisce con Windows:

  • xwininfo ti darà la geometria relativa e assoluta.
  • xprop ti dirà molte informazioni, tra cui se la finestra è attiva, ma non la sua geometria
  • xdpyinfo ti mostrerà anche l'id della finestra attiva, ma nessuna informazione aggiuntiva.
  • wmctrl ti fornirà un elenco di informazioni su Windows e ti consentirà di selezionare la finestra attiva per la modifica, ma non le informazioni.

Ad esempio per cambiare il titolo della finestra attiva in "Nuovo nome":

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

O per cambiare la posizione della finestra attiva:

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

Considera wmctrl se devi semplicemente modificare qualcosa di semplice, come la geometria della finestra. Prendi in considerazione l'utilizzo degli altri script sopra menzionati solo se vuoi fare altre cose più complesse.

    
risposta data Martin Owens -doctormo- 07.01.2011 - 23:20
7

Con "xdotool" puoi facilmente interagire con Windows usando eventi di tastiera o mouse.

Esempio di invio di una sequenza ctrl-c alla finestra attiva:

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

Se hai davvero bisogno della posizione della finestra:

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

Per ulteriori azioni / opzioni, consulta la pagina man .

    
risposta data João Pinto 07.01.2011 - 23:19

Leggi altre domande sui tag