Estoy tratando de ejecutar xdotool type word
a continuación, xdotool key Return
a partir de aplicaciones de inicio de Preferencias.
Pero si uso &&
o ;
, xdotool lo evalúa como una continuación de la entrada.
command-line
xdotool
janot
fuente
fuente
xdotool type $'word\r'
, donde$''
escapa\r
a algo así como retorno (\n
no funciona aquí).Respuestas:
Larga historia corta:
usa un guión.
Y ponga la ruta del guión en el
Exec
campo.Larga historia:
Según la página del
xdotool
manual :El encadenamiento de comandos a través de
;
o&
no es posible, ya que esa es la sintaxis de shell y Startup Applications no admite la sintaxis de shell. Sin embargo, si todo lo que desea hacer es presionar Enterdespués de escribir algo, hay una forma indirecta de hacerlo.Cuando dice nueva línea "ASCII", no significa nada
\n
. Y la sustitución de comandos (xdotool type "$(printf '\n')"
, por ejemplo) se come las nuevas líneas finales. Después de estaxdotools
publicación en el foro , probé esto:Y funcionó. Pero solo funciona si hay algún personaje después del
\n
, y esto obviamente deja un espacio final, que no sería lo que quieres. Lo modifiqué para:Y esto funciona y no deja espacio libre. Sin embargo, puede causar problemas para aquellos que usan el modo Vi en su shell.
Gracias a los comentarios de @ steeldriver me di cuenta de que esto se debía a que lo había probado en la misma terminal en la que estaba ejecutando los comandos. Solo una pequeña brecha entre mi presión Entery el
xdotool
comando fue suficiente para que una nueva línea se registrara correctamente. Así:Entonces, ya sea extendiendo la línea citando:
o usar la interpretación de shell como sugirió @steeldriver parece la opción correcta.
Sin embargo, un script que contiene:
en el
Exec
campo funcionó bien. De hecho, siempre recomiendo usar un script para comandos complejos en un archivo de escritorio.Puede tener un script
/usr/bin/xdotool
en el shebang, pero la página de manual dice "elscript
modo no está completamente desarrollado y puede estar por debajo de sus expectativas", así que me quedé con los scripts de bash.Podría haber estado viendo cosas, pero en mis primeros intentos, tuve que poner un (pequeño). Ese fue un artefacto de probarlo en la terminal que estaba ejecutando los comandos en lugar de otra ventana.sleep
entre los comandostype
ykey
fuente
xdotool type 'word
seguida de la tecla 'Entrar' y luego el cierre'
, como lo hace$'word\n'
(en el cual bash expande la línea\n
a una nueva línea literal antes de pasar el argumento axdotool
).'
o dos\n
s con el$
truco).sleep
(ver la nota en texto pequeño). No estaba cambiando ventanas y solo probándolo en la misma ventana, pero con unsleep 1
, ambos métodos funcionaron tanto con la misma ventana como después de cambiar. Supongo que mi propia tecla Intro de alguna manera interfirió con la nueva línea xdotool. Sin embargo, para el requisito más complejo de un archivo de escritorio, todavía recomendaría el script.Me parece que la aplicación no analiza múltiples comandos, sino que la trata como un solo comando. Como tal, conviértalo en un solo comando envolviéndolo en una llamada de shell ...
Ahora también puedes hacer otras cosas de shell ...
Tenga en cuenta que el comando "fecha" utilizado en ese último incluye una nueva línea! y "xdotool" lo generará.
NOTA: si está haciendo esto como una macro de teclado, también agregaría algunas opciones más a "xdotool" para que funcione mejor ...
fuente