Réponses:
Longue histoire:
utilisez un script.
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
Et mettez le chemin du script sur le Exec
terrain.
Longue histoire:
Selon la xdotool
page de manuel :
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'.
Le chaînage de commandes via ;
ou &
n'est pas possible, car il s'agit de la syntaxe du shell et les applications de démarrage ne prennent pas en charge la syntaxe du shell. Cependant, si tout ce que vous souhaitez faire est d'appuyer sur Enteraprès avoir tapé quelque chose, il existe un moyen détourné de le faire.
Quand il est écrit "newline" ASCII ", cela ne signifie pas une mise à nu \n
. Et la substitution de commande ( xdotool type "$(printf '\n')"
disons) mange des sauts de ligne de fin. Suite à ce xdotools
post sur le forum , j'ai essayé ceci:
xdotool type "$(printf 'date\n ')"
Et ça a marché. Mais cela ne fonctionne que s'il y a du caractère après le \n
, et cela laisse évidemment un espace de fin, ce qui ne serait pas ce que vous voulez. J'ai modifié cela pour:
xdotool type "$(printf 'date\n\e ')"
Et cela fonctionne et ne laisse aucun espace de fuite. Cependant, cela pourrait causer des problèmes à ceux qui utilisent le mode Vi dans leur shell.
Grâce aux commentaires de @ steeldriver, j'ai compris que c'était dû à mon essai sur le terminal même sur lequel j'exécutais les commandes. Juste un petit écart entre ma pression Enteret la xdotool
commande était suffisant pour qu'une seule nouvelle ligne soit enregistrée correctement. Donc:
sleep 0.1; xdotool type $'date\n'
Donc, soit en prolongeant la ligne en la citant:
xdotool type 'date
'
ou en utilisant l'interprétation du shell comme suggéré par @steeldriver ressemble à la bonne option.
Cependant, un script contenant:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
sur le Exec
terrain a bien fonctionné. En effet, je recommande toujours d'utiliser un script pour des commandes complexes dans un fichier de bureau.
Vous pouvez avoir un script /usr/bin/xdotool
dans le shebang, mais la page de manuel indique que "le script
mode n'est pas complètement étoffé et peut tomber en dessous de vos attentes", donc je me suis contenté de bash les scripts.
J'aurais peut-être vu des choses, mais dans mes premiers essais, j'ai dû mettre un (petit) . C'était un artefact de l'essayer sur le terminal qui exécutait les commandes au lieu d'une autre fenêtre.sleep
entre les commandes type
etkey
xdotool type 'word
suivi de la touche 'Entrée' puis de la fermeture '
, comme le fait $'word\n'
(dans lequel bash étend le \n
à un saut de ligne littéral avant de passer l'argument à xdotool
).
'
ou les deux \n
avec l' $
astuce).
sleep
(voir la note en petit texte). Je ne changeais pas les fenêtres et je les essayais simplement sur la même fenêtre, mais avec a sleep 1
, les deux méthodes fonctionnaient avec la même fenêtre et après le changement. Je suppose que ma propre touche Entrée a interféré d'une manière ou d'une autre avec la nouvelle ligne xdotool. Cependant, pour l'exigence plus complexe d'un fichier de bureau, je recommanderais toujours le script.
Il me semble que l'application n'analyse pas plusieurs commandes, mais la traite comme une seule commande. En tant que tel, faites-en une seule commande en l'enveloppant d'un appel shell ...
bash -c 'xdotool type date; xdotool key Return'
Maintenant, vous pouvez également faire d'autres choses shell ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Notez que la commande "date" utilisée dans ce dernier inclut une nouvelle ligne! et "xdotool" le sortira.
REMARQUE: si vous faites cela en tant que macro clavier, j'ajouterais également quelques options supplémentaires à "xdotool" pour améliorer le fonctionnement ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
, où le$''
échappe\r
à quelque chose comme return (\n
ne fonctionne pas ici).