<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ca">
	<id>http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Xdotool_-_command-line_X11_automation_tool</id>
	<title>Xdotool - command-line X11 automation tool - Historial de revisió</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.joanillo.org/index.php?action=history&amp;feed=atom&amp;title=Xdotool_-_command-line_X11_automation_tool"/>
	<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Xdotool_-_command-line_X11_automation_tool&amp;action=history"/>
	<updated>2026-08-30T08:38:55Z</updated>
	<subtitle>Historial de revisió per a aquesta pàgina del wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://wiki.joanillo.org/index.php?title=Xdotool_-_command-line_X11_automation_tool&amp;diff=250387&amp;oldid=prev</id>
		<title>Joan: /* Aprofundint en xdotool */</title>
		<link rel="alternate" type="text/html" href="http://wiki.joanillo.org/index.php?title=Xdotool_-_command-line_X11_automation_tool&amp;diff=250387&amp;oldid=prev"/>
		<updated>2013-03-05T17:16:19Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Aprofundint en xdotool&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Pàgina nova&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=xdotool=&lt;br /&gt;
Cerco a Google: ''send keyboard event / key to specific background window''&lt;br /&gt;
*https://bbs.archlinux.org/viewtopic.php?id=122831&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install xdotool&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
NAME&lt;br /&gt;
       xdotool - command-line X11 automation tool&lt;br /&gt;
&lt;br /&gt;
SYNOPSIS&lt;br /&gt;
       xdotool cmd args...&lt;br /&gt;
&lt;br /&gt;
DESCRIPTION&lt;br /&gt;
       xdotool lets you programatically (or manually) simulate keyboard input&lt;br /&gt;
       and mouse activity, move and resize windows, etc. It does this using&lt;br /&gt;
       X11's XTEST extension and other Xlib functions.&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Per trobar la finestra del GIMP:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ win=$(xdotool search --onlyvisible --class gimp | head -1)&lt;br /&gt;
$ echo $win&lt;br /&gt;
58720676&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
ja sé el id de la finestra del GIMP&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
win=$(xdotool search --onlyvisible --class gimp | head -1)&lt;br /&gt;
xdotool windowactivate $win&lt;br /&gt;
xdotool key Ctrl+q&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Per exemple, tinc un tab en el Firefox en què el títol posa ''Pamplona''.&lt;br /&gt;
$ win=$(xdotool search --title Pamplona | head -1)&lt;br /&gt;
$ echo $win&lt;br /&gt;
52428988 (ara he tret l'opció --onlyvisible, doncs puc tenir varis tabs, i potser aquest no és el tab seleccionat.)&lt;br /&gt;
Per activar el Firefox:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
xdotool windowactivate $win&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Aquest script busca el tab del Firefox que en el títol hi ha ''Pamplona'', i copia el contingut al fitxer pamplona.txt:&lt;br /&gt;
&lt;br /&gt;
'''copy_pagina.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
win=$(xdotool search --onlyvisible --title Pamplona | head -1)&lt;br /&gt;
xdotool windowactivate $win&lt;br /&gt;
xdotool key 'ctrl+a'&lt;br /&gt;
xdotool key 'ctrl+c'&lt;br /&gt;
xclip -o &amp;gt; ~/pamplona.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Aprofundint en xdotool=&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
Per exemple funciona el següent script, que omple la textbox del Google i fa una cerca:&lt;br /&gt;
&lt;br /&gt;
'''mouse_move.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
#xdotool getmouselocation --shell&lt;br /&gt;
eval $(xdotool getmouselocation --shell)&lt;br /&gt;
echo $X,$Y,$SCREEN,$WINDOW&lt;br /&gt;
xdotool mousemove 150 200&lt;br /&gt;
sleep 0.5&lt;br /&gt;
xdotool type 'hello world!'&lt;br /&gt;
sleep 0.5&lt;br /&gt;
xdotool key Enter&lt;br /&gt;
sleep 5&lt;br /&gt;
xdotool mousemove $X $Y&lt;br /&gt;
&lt;br /&gt;
#esborrem la caixa de text&lt;br /&gt;
xdotool mousemove 150 200 click --repeat 3 1&lt;br /&gt;
sleep 0.5&lt;br /&gt;
xdotool key BackSpace&lt;br /&gt;
sleep 0.5&lt;br /&gt;
xdotool mousemove $X $Y&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
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:&lt;br /&gt;
*http://mundogeek.net/archivos/2007/05/15/asignar-combinaciones-de-teclas-a-nuestros-comandos-en-linux/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ sudo apt-get install gconf-editor&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
*apps &amp;gt; metacity &amp;gt; keybinding commands. Escullo per ex, ''command_1'', i fico la ruta del script: ''/bin/sh /home/joan/mouse_move.sh''&lt;br /&gt;
*apps &amp;gt; metacity &amp;gt; &amp;gt; global keybinding. A ''run_command_1'' fico la drecera de teclat, per ex, ''&amp;lt;Alt&amp;gt;a''.&lt;br /&gt;
I ja funciona.&lt;br /&gt;
=Petit script per guardar posicions de pantalla=&lt;br /&gt;
En l'anterior punt hem vist com hem associat la comanda ''&amp;lt;Alt&amp;gt;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í.&lt;br /&gt;
&lt;br /&gt;
Aleshores associo la combinació &amp;lt;Alt&amp;gt;z al següent script: '''gravar_posicions.sh''':&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/sh&lt;br /&gt;
eval $(xdotool getmouselocation --shell)&lt;br /&gt;
echo $X,$Y,$SCREEN,$WINDOW &amp;gt;&amp;gt; /home/joan/gravar_posicions.txt&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
i ja està. Moc el ratolí fins la posició que m'interessa, i aleshores amb Alt-z me la guarda.&lt;br /&gt;
&lt;br /&gt;
=Plugins de Firefox útils=&lt;br /&gt;
Útils per al problema que es planteja, d'automatitzar la còpia de contingut web a un fitxer.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
==customizable shortcuts ==&lt;br /&gt;
Els customizable shortcuts és un plugin del Firefox, no ve per defecte.&lt;br /&gt;
*https://addons.mozilla.org/ca/firefox/addon/customizable-shortcuts/&lt;br /&gt;
i després d'instal.lar-lo el trobaré a Edit &amp;gt; Preferences.&lt;br /&gt;
&lt;br /&gt;
El problema d'aquest plugin és que dóna una llista tancada sobre les accions que es poden fer.&lt;br /&gt;
&lt;br /&gt;
==Executar una comanda de sistema des del Firefox==&lt;br /&gt;
En els add-ons del firefox veig que hi ha el següent add-on: '''AppLauncher 0.8.7'''&lt;br /&gt;
 &lt;br /&gt;
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.&lt;br /&gt;
 &lt;br /&gt;
Va molt bé, llàstima que no es pugui definir un shortcut.&lt;br /&gt;
&lt;br /&gt;
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.&lt;br /&gt;
&lt;br /&gt;
*[[Firefox add-on programming]]&lt;/div&gt;</summary>
		<author><name>Joan</name></author>
		
	</entry>
</feed>