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.
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 $windowid
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:
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:
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.