Xdotool: Control de Ventanas, Teclado y Ratón desde la Terminal

Xdotool: Control de Ventanas, Teclado y Ratón desde la Terminal

Xdotool es una herramienta de línea de comandos que permite controlar el ratón, el teclado y las ventanas en sistemas X11. Su versatilidad la convierte en una herramienta invaluable para automatizar tareas, escribir scripts y crear interfaces gráficas personalizadas.

En este artículo, exploraremos las funcionalidades principales de Xdotool y cómo aprovecharlas para interactuar con el entorno gráfico de tu sistema. Aprenderemos a controlar ventanas, simular entradas de teclado y ratón, y a automatizar tareas repetitivas.

Controlando Ventanas con Xdotool

Xdotool ofrece un amplio abanico de comandos para manipular las ventanas de tu sistema. Estos comandos permiten realizar acciones como buscar, seleccionar, mover, cambiar el tamaño, minimizar, maximizar, cerrar y obtener información sobre las ventanas.

Buscar Ventanas con ‘search’

El comando ‘search’ de Xdotool es fundamental para encontrar las ventanas que deseas manipular. Permite buscar ventanas basándose en diferentes criterios, incluyendo:

  • Clase: El nombre de la clase de la ventana.
  • Nombre: El título de la ventana.
  • Profundidad de búsqueda: Indica el nivel de recursividad en el árbol de ventanas.
  • Visibilidad: Define si la ventana debe ser visible o no.
  • PID: El ID del proceso al que pertenece la ventana.
  • Pantalla: El número de pantalla en la que se encuentra la ventana.
  • Escritorio: El número de escritorio en el que se encuentra la ventana.
  • Límite de resultados: Especifica el número máximo de resultados que se mostrarán.
  • Condiciones de coincidencia: ‘all’ para que todas las condiciones se cumplan o ‘any’ para que al menos una condición se cumpla.

Por ejemplo, para encontrar todas las ventanas cuyo título contenga «Firefox» y que sean visibles, podemos ejecutar el siguiente comando:

bash
xdotool search --name "Firefox" --onlyvisible

Seleccionar Ventanas con ‘selectwindow’

El comando ‘selectwindow’ permite seleccionar una ventana haciendo clic en ella. Para utilizarlo, simplemente ejecuta el comando ‘xdotool selectwindow’ y haz clic en la ventana que deseas seleccionar. El comando devolverá el ID de la ventana seleccionada, que se puede utilizar en otros comandos de Xdotool.

LEER:  Find Command en Linux: Guía Completa con Ejemplos

Acciones al Producirse Eventos con ‘event’

El comando ‘event’ permite realizar acciones al producirse ciertos eventos en una ventana, como:

  • Entrada del cursor: Cuando el cursor del ratón entra en la ventana.
  • Salida del cursor: Cuando el cursor del ratón sale de la ventana.
  • Clic de ratón: Cuando se realiza un clic de ratón en la ventana.
  • Obtención de foco: Cuando la ventana recibe el foco.
  • Pérdida de foco: Cuando la ventana pierde el foco.

Por ejemplo, para ejecutar un comando al hacer clic en una ventana específica, podemos utilizar el siguiente script:

«`bash

!/bin/bash

windowid=$(xdotool search –name «Firefox»)
xdotool event –click 1 –window $window
id

Ejecuta el comando que deseas aquí

«`

Este script busca la ventana de Firefox, realiza un clic en ella y luego ejecuta un comando de tu elección.

Obtener Información sobre las Ventanas

Xdotool proporciona comandos para obtener información sobre las ventanas, como su ID, su PID, su nombre y su geometría.

Obtener el PID de una Ventana con ‘getwindowpid’

El comando ‘getwindowpid’ permite obtener el ID del proceso al que pertenece una ventana. Para utilizarlo, simplemente proporciona el ID de la ventana como argumento. Por ejemplo, para obtener el PID de la ventana con ID 12345, ejecuta el siguiente comando:

bash
xdotool getwindowpid 12345

Obtener el Nombre de una Ventana con ‘getwindowname’

El comando ‘getwindowname’ permite obtener el nombre o título de una ventana. Para utilizarlo, proporciona el ID de la ventana como argumento. Por ejemplo, para obtener el nombre de la ventana con ID 12345, ejecuta el siguiente comando:

bash
xdotool getwindowname 12345

Obtener la Geometría de una Ventana con ‘getwindowgeometry’

El comando ‘getwindowgeometry’ permite obtener la geometría de una ventana, incluyendo las coordenadas de su esquina superior izquierda, su ancho, su alto y el número de pantalla en el que se encuentra. Para utilizarlo, proporciona el ID de la ventana como argumento. Por ejemplo, para obtener la geometría de la ventana con ID 12345, ejecuta el siguiente comando:

LEER:  Case Shell en Unix/Linux: La forma eficiente de bifurcaciones

bash
xdotool getwindowgeometry 12345

Obtener el ID de la Ventana Activa con ‘getactivewindow’

El comando ‘getactivewindow’ devuelve el ID de la ventana que actualmente tiene el foco. Esto es útil para controlar la ventana activa sin necesidad de seleccionarla manualmente.

bash
xdotool getactivewindow

Modificando Ventanas con Xdotool

Xdotool ofrece comandos para modificar las propiedades de las ventanas, como su tamaño, su posición, su estado y su nombre.

Cambiar el Tamaño de una Ventana con ‘windowsize’

El comando ‘windowsize’ permite establecer el tamaño de una ventana. Puedes especificar el tamaño en píxeles o en porcentajes del tamaño de pantalla. Por ejemplo, para cambiar el tamaño de la ventana con ID 12345 a 800×600 píxeles, ejecuta el siguiente comando:

bash
xdotool windowsize 12345 800 600

Para establecer el tamaño de la ventana al 50% del tamaño de la pantalla, utiliza el siguiente comando:

bash
xdotool windowsize 12345 50% 50%

Mover una Ventana con ‘windowmove’

El comando ‘windowmove’ permite mover una ventana a una posición específica en la pantalla. Puedes especificar la posición en píxeles o en porcentajes del tamaño de la pantalla. Por ejemplo, para mover la ventana con ID 12345 a la posición 100×100, ejecuta el siguiente comando:

bash
xdotool windowmove 12345 100 100

Para mover la ventana al centro de la pantalla, utiliza el siguiente comando:

bash
xdotool windowmove 12345 50% 50%

Cambiar el Foco de una Ventana con ‘windowfocus’

El comando ‘windowfocus’ permite dar foco a una ventana. Para utilizarlo, proporciona el ID de la ventana como argumento. Por ejemplo, para dar foco a la ventana con ID 12345, ejecuta el siguiente comando:

bash
xdotool windowfocus 12345

Ocultar una Ventana con ‘windowunmap’

El comando ‘windowunmap’ permite ocultar una ventana. Para utilizarlo, proporciona el ID de la ventana como argumento. Por ejemplo, para ocultar la ventana con ID 12345, ejecuta el siguiente comando:

LEER:  ipcalc: Manipulación Sencilla de Direcciones IP en Linux

bash
xdotool windowunmap 12345

Mostrar una Ventana con ‘windowmap’

El comando ‘windowmap’ permite mostrar una ventana que está oculta. Para utilizarlo, proporciona el ID de la ventana como argumento. Por ejemplo, para mostrar la ventana con ID 12345, ejecuta el siguiente comando:

bash
xdotool windowmap 12345

Minimizar una Ventana con ‘windowminimize’

El comando ‘windowminimize’ permite minimizar una ventana. Para utilizarlo, proporciona el ID de la ventana como argumento. Por ejemplo, para minimizar la ventana con ID 12345, ejecuta el siguiente comando:

bash
xdotool windowminimize 12345

Cerrar una Ventana con ‘windowkill’

El comando ‘windowkill’ permite cerrar una ventana y terminar su proceso asociado. Para utilizarlo, proporciona el ID de la ventana como argumento. Por ejemplo, para cerrar la ventana con ID 12345, ejecuta el siguiente comando:

bash
xdotool windowkill 12345

Modificar las Propiedades de una Ventana con ‘set_window’

El comando ‘set_window’ permite modificar las propiedades de una ventana, incluyendo:

  • Nombre: El título de la ventana.
  • Nombre del icono: El nombre del icono de la ventana.
  • Rol: El rol de la ventana.
  • Clase: La clase de la ventana.
  • Classname: El nombre de clase de la ventana.

Por ejemplo, para cambiar el nombre de la ventana con ID 12345 a «Nueva ventana», ejecuta el siguiente comando:

bash
xdotool set_window --name "Nueva ventana" 12345

Control de la Pila de Ventanas

Xdotool también ofrece comandos para controlar la pila de ventanas. Estos comandos permiten mover una ventana hacia arriba o hacia abajo en la pila, o poner una ventana en la parte superior de la pila.

Sin embargo, el control de la pila de ventanas es un tema complejo que requiere un análisis más profundo. En un artículo posterior, exploraremos las opciones de Xdotool para manipular la pila de ventanas y cómo aprovecharlas para crear scripts más sofisticados.