Cómo obtener la identificación de la ventana de xdotool Window Stack

12

Necesito la identificación de la ventana que está activa o enfocada. Intento usar el xdotoolcomando. Hay un comando:

xdotool getactivewindow

El resultado se guarda en la pila de ventanas. Quiero obtener la identificación de widnow de esta pila de ventanas. Mando

xdotool getactivewindow getwindowpid

no me satisface No quiero obtener la identificación de la ventana por la identificación del proceso.

Mariusz
fuente

Respuestas:

11

Creo que xdotool getactivewindowes lo que quieres, ¿lo intentaste?

Imprime la identificación de la ventana (de la pila de la ventana) si no hay más subcomandos de xdotool en la línea de comandos.

Por xdotool getactivewindow getwindowpidejemplo, getactivewindowcoloca la identificación en la pila de la ventana y getwindowpidusa esta identificación para consultar el PID. Tenga en cuenta que ejecutar ese comando en la terminal siempre devolverá la ID de la ventana de la terminal, porque está activa. Para obtener la ID de otra ventana, intente sleep 2s && xdotool getactivewindowy seleccione la ventana de interés en el lapso de dos segundos.


Hay una complicación cuando se usa xdotoolcon otras herramientas para el manejo de ventanas:

Mientras que la xdotoolsalida usa números decimales para los identificadores de viento, la mayoría de las otras herramientas usan números hexadecimales para la salida (generalmente admiten ambas para la entrada).

Por ejemplo, si encuentra una ventana con xdotool getactivewindow, no encontrará el resultado en la salida de xwininfo -root -tree, que enumera todas las ventanas. Primero debe convertirse a un número hexadecimal:

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


Convertir decimal a hexadecimal:

printf 0x%x 69206716

Convertir hexadecimal a decimal:

printf %i 0x42002bc
Volker Siegel
fuente
Intenté el xdotool getactivewindowcomando y el problema es que no imprime el resultado en la terminal. Guarda el resultado en la pila de la ventana. Este comando imprime algún número, pero no es la identificación de la ventana (por ejemplo, 35651588)
Mariusz
¿Por qué crees que 35651588 no es el id de la ventana?
Volker Siegel
Sí, creo que 35651588 no es la identificación de la ventana. Puede ver la identificación de Windows mediante el comando xwininfo, por ejemplo xwininfo -root -tree, este comando imprime todas las ventanas y las ventanas tienen otros tipos de numeración.
Mariusz
1
xwininfomuestra la identificación de la ventana como números hexadecimales, y xdotool muestra números decimales, pero es lo mismo.
Volker Siegel
tienes razón. 35651588 = 0x2200004. xwininfo -root -tree | grep 2200004 0x2200004 "user@host:~": ("gnome-terminal" "Gnome-terminal") 1680x974+0+26 +0+51
Mariusz
1

Este comando me funciona

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

xdotool versión 3.20160805.1

Ahmed Habiba
fuente
xdotool getactivewindow key F5debería producir el mismo resultado
user3804598