Я пытаюсь работать xdotool type word
затем xdotool key Return
от запуска предпочтения Aplications.
Но если я использую &&
или ;
, xdotool оценивает его как продолжение входа.
Длинная короткая история:
Используйте сценарий.
#! /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
команда состояла достаточно в том, чтобы единственная новая строка была зарегистрирована правильно. Таким образом:
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
режим не полностью изложен в деталях и может упасть ниже Ваших ожиданий", таким образом, я придерживался для избиения сценариев.
Я, возможно, видел вещи, но в моих первых двух попытках, я должен был поместить (маленький) . Это было артефактом испытания его на терминале, который выполнял команды вместо другого окна.sleep
между type
и key
команды
Кажется мне, приложение не анализирует несколько команд, примкните к обработке его как единственная команда. Как таковой делают его единственной командой путем обертывания его вызов оболочки...
bash -c 'xdotool type date; xdotool key Return'
Теперь можно также сделать другие вещи оболочки...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Примечание, что команда "даты", используемая в том в последний раз, включает новую строку! и "xdotool" произведет его.
ПРИМЕЧАНИЕ: если бы Вы делаете это как макрос клавиатуры, я также добавил бы еще несколько опций к "xdotool" для создания этой работы лучше...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'