回答:
簡単に言えば
、スクリプトを使用します。
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
そして、スクリプトのパスをExec
フィールドに入力します。
長い話:
xdotool
マンページによると:
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'.
;
またはを介したコマンドチェーン&
は不可能です。これはシェル構文であり、スタートアップアプリケーションはシェル構文をサポートしていないためです。ただし、Enter何かを入力した後に押すだけの場合は、迂回する方法があります。
「ASCII」という改行が表示されている場合でも、それだけでは意味がありません\n
。そして、コマンド置換(xdotool type "$(printf '\n')"
たとえば、)は末尾の改行を削除します。このxdotools
フォーラム投稿に続いて、私はこれを試しました:
xdotool type "$(printf 'date\n ')"
そしてそれはうまくいった。しかし、これはの後に文字がある場合にのみ機能し\n
、これにより明らかに末尾にスペースが残りますが、これは望んでいないことです。私はそれを次のように変更しました:
xdotool type "$(printf 'date\n\e ')"
そして、これは機能し、後続のスペースを残しません。ただし、シェルでViモードを使用している場合は問題が発生する可能性があります。
@steeldriverのコメントのおかげで、これは私がコマンドを実行しているまさにその端末でそれを試したことによるものであることがわかりました。押すEnterとxdotool
コマンドの間にわずかなギャップがあれば、1つの改行が正しく登録されます。したがって:
sleep 0.1; xdotool type $'date\n'
したがって、引用符で行を拡張するか、
xdotool type 'date
'
または、@ steeldriverが推奨するシェル解釈を使用すると、正しいオプションのように見えます。
ただし、以下を含むスクリプト:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
でExec
フィールド罰金を働きました。実際、デスクトップファイルの複雑なコマンドにはスクリプトを使用することを常にお勧めします。
/usr/bin/xdotool
シバンでスクリプトを使用できますが、マンページには「script
モードは完全に具体化されておらず、期待を下回る可能性がある」と記載されているため、bashスクリプトを使用しました。
私は何かを見ていたかもしれませんが、最初の数回の試行ででした。それは、別のウィンドウの代わりにコマンドを実行していた端末でそれを試すことのアーティファクトでした。sleep
は、type
とkey
コマンドの間に(小さい)を入れなければなりません
xdotool type 'word
Enterキー、その後、終値が続く'
として行い、$'word\n'
(ここではbashが拡大\n
リテラルの改行への引数を渡す前にxdotool
)。
'
、2つ\n
のs キーを$
トリックで閉じます)。
sleep
(短いテキストのメモを参照)。私はウィンドウを変更せず、同じウィンドウで試してみましたが、を使用するとsleep 1
、両方のメソッドが同じウィンドウと切り替え後の両方で機能しました。自分のEnterキーを押すと、どういうわけかxdotool改行が妨げられたと思います。ただし、デスクトップファイルのより複雑な要件については、スクリプトをお勧めします。
アプリケーションは複数のコマンドを解析するのではなく、1つのコマンドとして扱うように思えます。そのため、シェル呼び出しをラップすることで単一のコマンドにします...
bash -c 'xdotool type date; xdotool key Return'
これで、他のシェルのこともできます...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
最後に使用した「date」コマンドには改行が含まれていることに注意してください。そして「xdotool」はそれを出力します。
注:これをキーボードマクロとして実行している場合は、 "xdotool"にいくつかのオプションを追加して、この機能を改善します...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
、$''
エスケープで\r
returnのようなものにエスケープします(\n
ここでは機能しません)。