Come ottenere l'id della finestra dallo stack di xdotool


12

Ho bisogno dell'id della finestra attiva o focalizzata. Provo ad usare il xdotoolcomando. C'è un comando:

xdotool getactivewindow

il risultato viene salvato nello stack di finestre. Voglio ottenere l'ID widnow da questo stack di finestre. Comando

xdotool getactivewindow getwindowpid

non mi soddisfa. Non voglio ottenere l'ID della finestra in base all'ID del processo.

Risposte:


11

Penso che xdotool getactivewindowsia quello che vuoi - l'hai provato?

Stampa l'id della finestra (dallo stack della finestra) se non ci sono altri sottocomandi xdotool sulla riga di comando.

Ad xdotool getactivewindow getwindowpidesempio, getactivewindowinserisce l'id nello stack di finestre e getwindowpidutilizza questo id per interrogare il PID. Notare che l'esecuzione di quel comando nel terminale restituirà sempre l'ID della finestra del terminale, poiché è attiva. Per ottenere l'ID da un'altra finestra, prova a sleep 2s && xdotool getactivewindowselezionare la finestra di interesse nell'arco di due secondi.


C'è una complicazione quando si utilizza xdotoolcon altri strumenti per la gestione delle finestre:

Mentre l' xdotooloutput utilizza numeri decimali per ID windwo, la maggior parte degli altri strumenti utilizza numeri esadecimali per l'output (in genere supportano entrambi per l'input).

Ad esempio, se trovi una finestra con xdotool getactivewindow, non troverai il risultato nell'output di xwininfo -root -tree, che elenca tutte le finestre. Deve prima essere convertito in un numero esadecimale:

$ xdotool getactivewindow                              
69206716
$ printf 0x%x 69206716                  
0x42002bc
$ xwininfo -root -tree | grep 0x42002bc
           0x42002bc (has no name): ("konsole" "Konsole")  1154x781+0+0  +1289+498


Conversione da decimale a esadecimale:

printf 0x%x 69206716

Conversione da esadecimale a decimale:

printf %i 0x42002bc

Ho provato il xdotool getactivewindowcomando e il problema è che non stampa il risultato nel terminale. Salva il risultato nello stack di finestre. Questo comando stampa un numero ma non è un id finestra (ad es. 35651588)
Mariusz,

Perché pensi che 35651588 non sia l'id della finestra?
Volker Siegel,

Sì, penso che 35651588 non sia l'id della finestra. È possibile visualizzare l'id di Windows tramite il comando xwininfo, ad esempio xwininfo -root -tree: questo comando stampa tutte le finestre e le finestre hanno altri tipi di numerazione.
Mariusz,

1
xwininfomostra l'id della finestra come numeri esadecimali e xdotool mostra i numeri decimali, ma è lo stesso.
Volker Siegel,

hai ragione. 35651588 = 0x2200004. xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz,

1

Questo comando funziona per me

xdotool key --window "$(xdotool getactivewindow)" F5

xdotool versione 3.20160805.1


xdotool getactivewindow key F5dovrebbe produrre lo stesso risultato
user3804598
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.