Xdotool - command-line X11 automation tool
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
- apps > metacity > keybinding commands. Escullo per ex, command_1, i fico la ruta del script: /bin/sh /home/joan/mouse_move.sh
- apps > metacity > > global keybinding. A run_command_1 fico la drecera de teclat, per ex, <Alt>a.
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.