Respostas:
Longa história:
use um script.
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
E coloque o caminho do script no Exec
campo.
Longa história:
De acordo com a página de 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'.
O encadeamento de comandos via ;
ou &
não é possível, pois essa é a sintaxe do shell e os Aplicativos de Inicialização não suportam a sintaxe do shell. No entanto, se tudo o que você deseja fazer é pressionar Enterdepois de digitar algo, existe uma maneira indireta de fazer isso.
Quando diz "nova linha" ASCII ", isso não significa nada \n
. E a substituição de comandos ( xdotool type "$(printf '\n')"
digamos) consome novas linhas. Após esta xdotools
postagem no fórum , tentei o seguinte:
xdotool type "$(printf 'date\n ')"
E funcionou. Mas só funciona se houver algum caractere após o \n
, e isso obviamente deixa um espaço à direita, o que não seria o que você deseja. Eu modifiquei isso para:
xdotool type "$(printf 'date\n\e ')"
E isso funciona e não deixa espaço à direita. No entanto, isso pode causar problemas para aqueles que usam o modo Vi em seu shell.
Graças aos comentários do @ steeldriver, eu descobri que isso se devia a mim mesmo no terminal em que eu estava executando os comandos. Apenas uma pequena lacuna entre minha pressão Entere o xdotool
comando foi suficiente para que uma única nova linha fosse registrada corretamente. Portanto:
sleep 0.1; xdotool type $'date\n'
Então, estendendo a linha citando-a:
xdotool type 'date
'
ou usar a interpretação do shell como sugeriu @steeldriver parece a opção certa.
No entanto, um script contendo:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
no Exec
campo funcionou bem. Na verdade, eu sempre recomendo usar um script para comandos complexos em um arquivo da área de trabalho.
Você pode ter um script /usr/bin/xdotool
no shebang, mas a página de manual diz que "o script
modo não está totalmente aprimorado e pode ficar abaixo das suas expectativas", então continuei com os scripts do bash.
Eu poderia estar vendo coisas, mas nas minhas primeiras tentativas, tive que colocar um (pequeno) . Esse foi um artefato de experimentá-lo no terminal que estava executando os comandos em vez de outra janela.sleep
entre os comandos type
ekey
xdotool type 'word
seguida pela tecla 'Enter' e depois pelo fechamento '
(como o $'word\n'
bash expande \n
para uma nova linha literal antes de passar o argumento para xdotool
).
'
ou dois \n
segundos com o $
truque).
sleep
(veja a nota em texto pequeno). Eu não estava mudando as janelas e apenas tentando na mesma janela, mas com a sleep 1
, ambos os métodos funcionaram com a mesma janela e após a troca. Eu acho que meu próprio pressionamento de tecla Enter interferiu de alguma forma na nova linha do xdotool. No entanto, para os requisitos mais complexos de um arquivo da área de trabalho, eu ainda recomendaria o script.
Parece-me que o aplicativo não está analisando vários comandos, mas tratando-o como um único comando. Como tal, torne-o um único comando envolvendo uma chamada de shell ...
bash -c 'xdotool type date; xdotool key Return'
Agora você também pode fazer outras coisas de concha ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Observe que o comando "date" usado nessa última inclui uma nova linha! e "xdotool" irá produzi-lo.
NOTA: se você estiver fazendo isso como uma macro de teclado, também adicionarei mais algumas opções ao "xdotool" para melhorar esse trabalho ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r'
, onde o$''
escape\r
para algo como return (\n
não funciona aqui).