¿Cómo puedo encontrar la ubicación (en el escritorio) de una ventana en la línea de comando?


19

Estoy tratando de escribir un pequeño script para ayudar a administrar mis ventanas a través de atajos de teclado.

Para hacer lo que quiero, necesito poder encontrar la ubicación actual y el tamaño de la ventana "activa" (enfocada). Por ubicación, me refiero a las coordenadas X, Y de la ventana en el escritorio, y por tamaño me refiero a la altura y el ancho de la ventana.

¿Existe una utilidad de línea de comandos que pueda obtener esta información?

Respuestas:


22

Puede obtener toda la información de la ventana activa actual utilizando este 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]+)

Simplemente analice la salida para las coordenadas que necesita. Aquí hay algunos comandos útiles al interactuar con Windows:

  • xwininfo le dará la geometría relativa y absoluta.
  • xprop le dará mucha información, incluso si la ventana está activa, pero no es geometría
  • xdpyinfo también le proporcionará la identificación de la ventana activa, pero no información adicional.
  • wmctrl obtendrá una lista de información sobre ventanas y le permitirá seleccionar la ventana activa para su modificación, pero no información.

Por ejemplo, para cambiar el título de la ventana activa a "Nuevo nombre":

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

O para cambiar la posición de la ventana activa:

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

Considere wmctrlsi solo necesita cambiar algo simple, como la geometría de la ventana. Considere usar los otros scripts mencionados anteriormente solo si desea hacer otras cosas más complejas.


1
Solo me gustaría señalar que obtengo resultados diferentes cuando ejecuto el segundo comando. El primero funciona como era de esperar.
TM.

1
Uso Arch pero podría ayudar a alguien aquí en el futuro. El primero no funcionó para mí, el segundo no proporcionó las dimensiones correctas quizás debido al WM. Pero la combinación de los dos funcionó. xwininfo -id $(xprop -root | grep "_NET_ACTIVE_WINDOW(WINDOW)" | grep -Eo "0x[0-9a-f]{2,}")
Sev

¡Gracias! Pero estoy de acuerdo con los dos primeros comentarios. El segundo comando, xwininfo -id $(xdpyinfo | grep focus | grep -E -o 0x[0-9a-f]+)me muestra una ventana secundaria (no tiene nombre) de mi Terminal. Cuando acabo de hacer xdpyinfo | grep focus, obtengo focus: window 0x435b877, revert to Parent, y 0x435b877 es la identificación de la ventana devuelta por el primer comando (que funciona para mí). Esto está en Trusty 14.04.1 LTS
nealmcb

8

Con "xdotool" puedes interactuar fácilmente con Windows usando eventos de teclado o mouse.

Ejemplo de enviar una CtrlCsecuencia a la ventana activa:

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

Si realmente necesita la posición de la ventana:

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

Para más acciones / opciones, consulte la página del manual .


Interesante, pero acabo de llegar Error: Invalid key sequence 'ctrl-c'.
l0b0
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.