Я пытаюсь запустить xdotool type word
затем xdotool key Return
из настроек запуска приложений.
Но если я использую &&
или ;
, xdotool оценивает его как продолжение ввода.
command-line
xdotool
Janot
источник
источник
xdotool type $'word\r'
, где$''
экранирует что-\r
то вроде возврата (\n
здесь не работает).Ответы:
Короче говоря:
используйте сценарий.
И поместите путь сценария в
Exec
поле.Длинная история:
Согласно
xdotool
справочной странице :Цепочка команд с помощью
;
или&
невозможна, так как это синтаксис оболочки и Startup Applications не поддерживает синтаксис оболочки. Однако, если все, что вы хотите сделать, это нажать Enterпосле ввода чего-либо, есть обходной способ сделать это.Когда он говорит «ASCII», новая строка не означает «голый»
\n
. И подстановка команд (xdotool type "$(printf '\n')"
скажем) съедает завершающие символы новой строки. После этогоxdotools
сообщения на форуме я попробовал это:И это сработало. Но это работает только в том случае, если после символа есть какой-то символ
\n
, и это, очевидно, оставляет завершающий пробел, который не будет тем, что вы хотите. Я изменил это, чтобы:И это работает и не оставляет места в конце. Однако это может вызвать проблемы у тех, кто использует режим Vi в своей оболочке.
Благодаря комментариям @ steeldriver я понял, что это из-за того, что я попробовал это на самом терминале, на котором выполнял команды. Достаточно небольшого промежутка между нажатием клавиши Enterи
xdotool
командой, чтобы единственная новая строка была правильно зарегистрирована. Таким образом:Так что либо расширив строку, указав ее
или использование интерпретации оболочки, как предложено @steeldriver, выглядит как правильный вариант.
Тем не менее, скрипт, содержащий:
в
Exec
поле работал нормально. Действительно, я всегда рекомендую использовать скрипт для сложных команд в файле рабочего стола.У вас может быть сценарий
/usr/bin/xdotool
в шебанге, но на странице руководства написано «script
режим не полностью продуман и может оказаться ниже ваших ожиданий», поэтому я остановился на сценариях bash.Возможно , я видел вещи, но в моих первых парах попыток, я должен был поставить (маленькие). Это был артефакт его тестирования на терминале, который выполнял команды, а не в другом окне.sleep
междуtype
иkey
командамиисточник
xdotool type 'word
последующим нажатием клавиши «Enter» , а затем закрытием'
, как это делает$'word\n'
(в котором Баш расширяет\n
буквальный перевод строки перед передачей аргументаxdotool
).'
или две\n
с$
трюк).sleep
(см. Примечание в небольшом тексте). Я не менял окна и просто пробовал его в одном и том же окне, но с помощьюsleep 1
обоих методов работал как в одном окне, так и после переключения. Я предполагаю, что мое собственное нажатие клавиши Enter как-то помешало переводу строки xdotool. Тем не менее, для более сложных требований к файлу рабочего стола, я все равно рекомендую скрипт.Мне кажется, приложение не разбирает несколько команд, а обрабатывает их как одну команду. Таким образом, сделайте его единственной командой, заключив ее в оболочку ...
Теперь вы также можете делать другие вещи оболочки ...
Обратите внимание, что команда «date», использованная в последнем, включает перевод строки! и "xdotool" выведет его.
ПРИМЕЧАНИЕ: если вы делаете это как макрос клавиатуры, я бы добавил еще несколько опций в «xdotool», чтобы сделать это лучше ...
источник