Antworten:
Lange Rede, kurzer
Sinn : Verwenden Sie ein Skript.
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
Und setzen Sie den Pfad des Skripts in das Exec
Feld.
Lange Geschichte:
Laut xdotool
Manpage :
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'.
Befehlsverkettung über ;
oder &
ist nicht möglich, da dies Shell-Syntax ist und Startup Applications keine Shell-Syntax unterstützt. Wenn Sie jedoch Enternach dem Eingeben nur etwas drücken möchten , gibt es einen Umweg.
Wenn "ASCII" Newline steht, bedeutet das nicht nackt \n
. Und die Befehlssubstitution (z xdotool type "$(printf '\n')"
. B.) frisst nachgestellte Zeilenumbrüche. Nach diesem xdotools
Forumsbeitrag habe ich Folgendes versucht:
xdotool type "$(printf 'date\n ')"
Und es hat funktioniert. Aber es funktioniert nur, wenn es nach dem einen Charakter gibt \n
, und dies lässt offensichtlich einen nachgestellten Raum übrig, der nicht das wäre, was Sie wollen. Ich habe das geändert zu:
xdotool type "$(printf 'date\n\e ')"
Und das funktioniert und lässt keinen nachlaufenden Raum. Dies kann jedoch zu Problemen für Benutzer führen, die den Vi-Modus in ihrer Shell verwenden.
Dank der Kommentare von @ steeldriver habe ich herausgefunden, dass ich es auf dem Terminal ausprobiert habe, auf dem ich die Befehle ausgeführt habe. Nur eine kleine Lücke zwischen meinem Drücken Enterund dem xdotool
Befehl reichte aus, um eine einzelne neue Zeile korrekt zu registrieren. Somit:
sleep 0.1; xdotool type $'date\n'
Erweitern Sie also entweder die Zeile, indem Sie sie zitieren:
xdotool type 'date
'
oder die Verwendung der Shell-Interpretation, wie von @steeldriver vorgeschlagen, scheint die richtige Option zu sein.
Ein Skript enthält jedoch:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
auf dem Exec
Feld hat gut funktioniert. In der Tat empfehle ich immer die Verwendung eines Skripts für komplexe Befehle in einer Desktop-Datei.
Sie können ein Skript mit /usr/bin/xdotool
im Shebang haben, aber die Manpage sagt " script
Modus ist nicht vollständig ausgearbeitet und kann unter Ihren Erwartungen liegen", also habe ich mich an Bash-Skripte gehalten.
Ich habe vielleicht Dinge gesehen, aber in meinen ersten Versuchen musste ich ein (kleines) . Das war ein Artefakt beim Ausprobieren auf dem Terminal, das die Befehle anstelle eines anderen Fensters ausführte.sleep
zwischen die Befehle type
und setzenkey
xdotool type 'word
gefolgt von der Eingabetaste und dem Schließen '
, wie dies der Fall ist $'word\n'
(wobei bash die \n
Zeile zu einer wörtlichen neuen Zeile erweitert, bevor das Argument an übergeben wird xdotool
).
'
oder zwei \n
s mit dem $
Trick).
sleep
(siehe den Hinweis in kleinem Text). Ich habe nicht die Fenster gewechselt und es nur im selben Fenster ausprobiert, aber mit a sleep 1
funktionierten beide Methoden sowohl im selben Fenster als auch nach dem Wechsel. Ich denke, mein eigener Enter-Tastendruck hat die xdotool-Newline irgendwie gestört. Für die komplexeren Anforderungen einer Desktop-Datei würde ich das Skript dennoch empfehlen.
Mir scheint, die Anwendung analysiert nicht mehrere Befehle, sondern behandelt sie als einen einzigen Befehl. Machen Sie es zu einem einzigen Befehl, indem Sie einen Shell-Aufruf einschließen ...
bash -c 'xdotool type date; xdotool key Return'
Jetzt können Sie auch andere Shell-Dinge tun ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Beachten Sie, dass der zuletzt verwendete Befehl "Datum" eine neue Zeile enthält! und "xdotool" gibt es aus.
HINWEIS: Wenn Sie dies als Tastaturmakro tun, würde ich "xdotool" noch einige weitere Optionen hinzufügen, damit dies besser funktioniert ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
, wo das zu so etwas wie Rückkehr$''
entkommt\r
(\n
funktioniert hier nicht).