Ich versuche xdotool type word
dann xdotool key Return
von Startup Aplications Preferences aus zu laufen .
Aber wenn ich &&
oder ;
benutze, wertet xdotool es als Fortsetzung der Eingabe aus.
command-line
xdotool
Janot
quelle
quelle
xdotool type $'word\r'
, wo das zu so etwas wie Rückkehr$''
entkommt\r
(\n
funktioniert hier nicht).Antworten:
Lange Rede, kurzer
Sinn : Verwenden Sie ein Skript.
Und setzen Sie den Pfad des Skripts in das
Exec
Feld.Lange Geschichte:
Laut
xdotool
Manpage :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 (zxdotool type "$(printf '\n')"
. B.) frisst nachgestellte Zeilenumbrüche. Nach diesemxdotools
Forumsbeitrag habe ich Folgendes versucht: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: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:Erweitern Sie also entweder die Zeile, indem Sie sie zitieren:
oder die Verwendung der Shell-Interpretation, wie von @steeldriver vorgeschlagen, scheint die richtige Option zu sein.
Ein Skript enthält jedoch:
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 Befehletype
und setzenkey
quelle
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 wirdxdotool
).'
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 asleep 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 ...
Jetzt können Sie auch andere Shell-Dinge tun ...
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 ...
quelle