Xdotool - command-line X11 automation tool

De Wikijoan
Dreceres ràpides: navegació, cerca

Contingut

xdotool

Cerco a Google: send keyboard event / key to specific background window

$ sudo apt-get install xdotool
NAME
       xdotool - command-line X11 automation tool

SYNOPSIS
       xdotool cmd args...

DESCRIPTION
       xdotool lets you programatically (or manually) simulate keyboard input
       and mouse activity, move and resize windows, etc. It does this using
       X11's XTEST extension and other Xlib functions.

Per trobar la finestra del GIMP:

$ win=$(xdotool search --onlyvisible --class gimp | head -1)
$ echo $win
58720676

ja sé el id de la finestra del GIMP

El que no es pot fer amb xdotool és empalmar comandes diferents. Per tant, per cada comanda he d'invocar xdotool (almenys en la meva versió...). Per exemple, si vull tancar el GIMP, faré tres passos: saber quin és el id de la finestra del GIMP, activar la finestra (o fer focus), i tancar-lo amb Ctrl-Q. Fico les tres comandes amb un script:

#!/bin/bash
win=$(xdotool search --onlyvisible --class gimp | head -1)
xdotool windowactivate $win
xdotool key Ctrl+q

Per exemple, tinc un tab en el Firefox en què el títol posa Pamplona. $ win=$(xdotool search --title Pamplona | head -1) $ echo $win 52428988 (ara he tret l'opció --onlyvisible, doncs puc tenir varis tabs, i potser aquest no és el tab seleccionat.) Per activar el Firefox:

xdotool windowactivate $win

però el problema està en què si tinc varis tabs, ha d'estar aquest tab seleccionat per tal de què s'activi. Si no és el cas, no s'activa.

Aquest script busca el tab del Firefox que en el títol hi ha Pamplona, i copia el contingut al fitxer pamplona.txt:

copy_pagina.sh:

#!/bin/bash
win=$(xdotool search --onlyvisible --title Pamplona | head -1)
xdotool windowactivate $win
xdotool key 'ctrl+a'
xdotool key 'ctrl+c'
xclip -o > ~/pamplona.txt

Aprofundint en xdotool

Vull mirar tot el tema de mousemove, amb la idea de poder navegar de forma automàtica per diferents webs, tot fent avançar el cursor a determinades posicions i clicant.

Per exemple funciona el següent script, que omple la textbox del Google i fa una cerca:

mouse_move.sh:

#!/bin/sh
#xdotool getmouselocation --shell
eval $(xdotool getmouselocation --shell)
echo $X,$Y,$SCREEN,$WINDOW
xdotool mousemove 150 200
sleep 0.5
xdotool type 'hello world!'
sleep 0.5
xdotool key Enter
sleep 5
xdotool mousemove $X $Y

#esborrem la caixa de text
xdotool mousemove 150 200 click --repeat 3 1
sleep 0.5
xdotool key BackSpace
sleep 0.5
xdotool mousemove $X $Y

també és interessant veure com puc executar aquest script, que afecta al moviment del ratolí, amb una combinació de tecles. És fàcil amb Metacity, tal com s'explica a:

$ sudo apt-get install gconf-editor

I ja funciona.

Petit script per guardar posicions de pantalla

En l'anterior punt hem vist com hem associat la comanda <Alt>a a l'execució d'un petit script. Ara veurem un cas pràctic. Volem guardar diferents posicions del ratolí a un fitxer, però clar, no puc utilitzar el ratolí.

Aleshores associo la combinació <Alt>z al següent script: gravar_posicions.sh:

#!/bin/sh
eval $(xdotool getmouselocation --shell)
echo $X,$Y,$SCREEN,$WINDOW >> /home/joan/gravar_posicions.txt

i ja està. Moc el ratolí fins la posició que m'interessa, i aleshores amb Alt-z me la guarda.

Plugins de Firefox útils

Útils per al problema que es planteja, d'automatitzar la còpia de contingut web a un fitxer.

Idea. Pot ser interessant navegar per diferents webs, i que només determinades webs les vull gravar (per exemple, les que tenen mail). Aleshores podria tenir una combinació de teclat del firefox que activi el procés de gravar el contingut a un fitxer.

customizable shortcuts

Els customizable shortcuts és un plugin del Firefox, no ve per defecte.

i després d'instal.lar-lo el trobaré a Edit > Preferences.

El problema d'aquest plugin és que dóna una llista tancada sobre les accions que es poden fer.

Executar una comanda de sistema des del Firefox

En els add-ons del firefox veig que hi ha el següent add-on: AppLauncher 0.8.7

Això em deixa executar una aplicació des del menú contextual, és a dir, des del botó dret del ratolí. He de de ficar el nom de l'aplicació que vull llençar, la seva ruta, i tots els arguments que vulgui.

Va molt bé, llàstima que no es pugui definir un shortcut.

El més pràctic serà modificar el codi per tal d'afegir el shortcut manulament. I això em porta a programar un add-on del Firefox.

Eines de l'usuari
Espais de noms
Variants
Accions
Navegació
IES Jaume Balmes
Màquines recreatives
CNC
Informàtica musical
joanillo.org Planet
Eines