Saltar al contenido

Ejecute varios comandos xdotool en una línea separados entre sí

Solución:

Larga historia corta:
Utilice un guión.

#! /bin/sh
# With some window selection magic, or a sleep 
# if you want to do that manually.
xdotool type word
xdotool key Return

Y poner la ruta del guión en el Exec campo.


Larga historia:

De acuerdo con la xdotool página de manual:

type
       Supports newlines and tabs (ASCII newline and tab). 
       With respect to "COMMAND CHAINING", this command consumes the
       remainder of the arguments and types them. That is, no commands can
       chain after 'type'.

Encadenamiento de comandos a través de ; o & no es posible, ya que esa es la sintaxis de shell y las aplicaciones de inicio no son compatibles con la sintaxis de shell. Sin embargo, si todo lo que desea hacer es presionar Ingresar después de escribir algo, hay una forma indirecta de hacerlo.

Cuando dice “ASCII” nueva línea, no significa un simple n. Y sustitución de comandos (xdotool type "$(printf 'n')", digamos) come nuevas líneas finales. Siguiendo esto xdotools publicación del foro, probé esto:

xdotool type "$(printf 'daten ')"

Y funcionó. Pero solo funciona si hay algún carácter después del n, y esto obviamente deja un espacio final, que no sería lo que desea. Lo modifiqué a:

xdotool type "$(printf 'datene ')"

Y esto funciona y no deja espacio al final. Sin embargo, podría causar problemas a quienes usan el modo Vi en su shell.

Gracias a los comentarios de @ steeldriver, descubrí que esto se debía a que lo probé en la misma terminal en la que estaba ejecutando los comandos. Solo un pequeño espacio entre mi presión Ingresar y el xdotool El comando fue suficiente para que una sola nueva línea se registre correctamente. Por lo tanto:

sleep 0.1; xdotool type $'daten'

Entonces, o extendiendo la línea citandola:

xdotool type 'date
'

o usar la interpretación de shell como sugirió @steeldriver parece la opción correcta.

Sin embargo, un script que contiene:

#! /bin/sh
sleep 1
xdotool type date
xdotool key Return

en el Exec el campo funcionó bien. De hecho, siempre recomiendo usar un script para comandos complejos en un archivo de escritorio.

Puedes tener un guión con /usr/bin/xdotool en el shebang, pero la página de manual dice “script el modo no está completamente desarrollado y puede caer por debajo de sus expectativas “, así que me limité a los scripts de bash.

Podría haber estado viendo cosas, pero en mis primeros intentos, tuve que poner un (pequeño) sleep Entre los type y key comandos. Eso fue un artefacto de probarlo en la terminal que estaba ejecutando los comandos en lugar de otra ventana.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *