Jawaban:
Singkat cerita:
Gunakan skrip.
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
Dan letakkan jalan naskah di Exec
lapangan.
Cerita panjang:
Menurut halaman xdotool
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'.
Perangkaian perintah melalui ;
atau &
tidak dimungkinkan, karena itu adalah sintaksis shell dan Aplikasi Startup tidak mendukung sintaksis shell. Namun, jika semua yang ingin Anda lakukan adalah menekan Entersetelah mengetik sesuatu, ada cara memutar untuk melakukannya.
Ketika dikatakan "ASCII" baris baru, itu tidak berarti telanjang \n
. Dan perintah substitusi ( xdotool type "$(printf '\n')"
, katakanlah) memakan baris baru. Mengikuti xdotools
posting forum ini , saya mencoba ini:
xdotool type "$(printf 'date\n ')"
Dan itu berhasil. Tapi itu hanya berfungsi jika ada beberapa karakter setelah \n
, dan ini jelas meninggalkan ruang tambahan, yang tidak akan seperti yang Anda inginkan. Saya memodifikasi itu menjadi:
xdotool type "$(printf 'date\n\e ')"
Dan ini bekerja dan tidak meninggalkan ruang tambahan. Namun, ini dapat menyebabkan masalah bagi mereka yang menggunakan mode Vi di shell mereka.
Berkat komentar @ steeldriver, saya menemukan bahwa ini karena saya mencobanya di terminal tempat saya menjalankan perintah. Hanya sedikit celah antara penekanan saya Enterdan xdotool
perintah sudah cukup untuk satu baris baru untuk didaftarkan dengan benar. Jadi:
sleep 0.1; xdotool type $'date\n'
Jadi, perpanjang baris dengan mengutipnya:
xdotool type 'date
'
atau menggunakan interpretasi shell seperti yang disarankan @steeldriver sepertinya opsi yang tepat.
Namun, skrip berisi:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
di Exec
lapangan bekerja dengan baik. Memang, saya selalu merekomendasikan menggunakan skrip untuk perintah kompleks dalam file desktop.
Anda dapat memiliki skrip dengan /usr/bin/xdotool
shebang, tetapi halaman manual mengatakan " script
mode tidak sepenuhnya disempurnakan dan mungkin jauh di bawah harapan Anda", jadi saya tetap menggunakan bash scripts.
Saya mungkin telah melihat banyak hal, tetapi dalam beberapa percobaan pertama saya, saya harus meletakkan (kecil) . Itu adalah artefak untuk mencobanya di terminal yang mengeksekusi perintah bukan jendela lain.sleep
antara perintah type
dankey
xdotool type 'word
diikuti oleh tombol 'Enter' dan kemudian penutup '
, seperti halnya $'word\n'
(di mana bash memperluas \n
ke baris baru literal sebelum meneruskan argumen ke xdotool
).
'
atau dua \n
s dengan $
trik).
sleep
(lihat catatan dalam teks kecil). Saya tidak mengubah jendela dan hanya mencobanya di jendela yang sama, tetapi dengan a sleep 1
, kedua metode bekerja dengan jendela yang sama dan setelah beralih. Saya kira Enter saya sendiri menekan tombol entah bagaimana mengganggu dengan xdotool newline. Namun, untuk persyaratan file desktop yang lebih kompleks, saya masih merekomendasikan script.
Menurut saya aplikasi tersebut tidak mem-parsing beberapa perintah, tetapi memperlakukannya sebagai satu perintah. Dengan demikian membuatnya menjadi perintah tunggal dengan membungkusnya dengan panggilan shell ...
bash -c 'xdotool type date; xdotool key Return'
Sekarang Anda juga dapat melakukan hal-hal shell lainnya ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Perhatikan bahwa perintah "date" yang digunakan pada yang terakhir menyertakan baris baru! dan "xdotool" akan menampilkannya.
CATATAN: jika Anda melakukan ini sebagai makro keyboard saya juga akan menambahkan beberapa opsi lagi ke "xdotool" untuk membuat ini bekerja lebih baik ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
, di mana$''
lolos\r
ke sesuatu seperti kembali (\n
tidak bekerja di sini).