Odpowiedzi:
Krótka historia:
użyj skryptu.
#! /bin/sh
# With some window selection magic, or a sleep
# if you want to do that manually.
xdotool type word
xdotool key Return
I umieść ścieżkę skryptu w Execpolu.
Długa historia:
Według strony xdotoolpodręcznika :
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'.
Łańcuch poleceń za pomocą ;lub &nie jest możliwy, ponieważ jest to składnia powłoki, a aplikacje startowe nie obsługują składni powłoki. Jeśli jednak wszystko, co chcesz zrobić, to nacisnąć Enterpo wpisaniu czegoś, istnieje runda.
Kiedy mówi „nowa linia” ASCII, nie znaczy to gołe \n. I podstawianie poleceń ( xdotool type "$(printf '\n')"powiedzmy) zjada końcowe znaki nowej linii. Po tym xdotoolswpisie na forum spróbowałem:
xdotool type "$(printf 'date\n ')"
I zadziałało. Ale to działa tylko wtedy, gdy po znaku jest jakaś postać \n, a to oczywiście pozostawia spację, która nie byłaby tym, czego chcesz. Zmodyfikowałem to, aby:
xdotool type "$(printf 'date\n\e ')"
I to działa i nie pozostawia końcowej przestrzeni. Może to jednak powodować problemy dla tych, którzy używają trybu Vi w swojej powłoce.
Dzięki komentarzom @ steeldriver zorientowałem się, że to dlatego, że wypróbowałem to na terminalu, na którym wykonywałem polecenia. Wystarczyła niewielka przerwa między naciśnięciem Entera xdotoolpoleceniem, aby poprawnie zarejestrować pojedynczą linię. A zatem:
sleep 0.1; xdotool type $'date\n'
Więc albo przedłuż linię, cytując ją:
xdotool type 'date
'
lub użycie interpretacji powłoki, jak sugeruje @steeldriver, wygląda jak właściwa opcja.
Jednak skrypt zawierający:
#! /bin/sh
sleep 1
xdotool type date
xdotool key Return
w Execpolu działało dobrze. Rzeczywiście, zawsze zalecam używanie skryptu do złożonych poleceń w pliku na pulpicie.
Możesz mieć skrypt /usr/bin/xdotoolw shebang, ale strona mówi, że „ scripttryb nie jest w pełni rozwinięty i może spaść poniżej twoich oczekiwań”, więc trzymałem się skryptów.
Mogłem widzieć rzeczy, ale podczas moich pierwszych prób musiałem umieścić (małe) . To był artefakt wypróbowania go na terminalu, który wykonywał polecenia zamiast w innym oknie.sleepmiędzy poleceniami typeakey
xdotool type 'wordnastępnie „enter” klucz, a następnie zamknięcia ', podobnie jak $'word\n'(w którym bash rozszerza \nprzed przekazaniem argument do dosłownego nowej linii xdotool).
'jednego lub dwóch \nza pomocą $lewy).
sleep(patrz uwaga w małym tekście). Nie zmieniałem okien i po prostu wypróbowywałem je w tym samym oknie, ale z sleep 1, obie metody działały zarówno z tym samym oknem, jak i po przełączeniu. Wydaje mi się, że moje własne naciśnięcie klawisza Enter w jakiś sposób zakłóciło nową linię xdotool. Jednak w przypadku bardziej złożonych wymagań dotyczących pliku pulpitu nadal polecam skrypt.
Wydaje mi się, że aplikacja nie analizuje wielu poleceń, ale traktuje to jako jedno polecenie. W związku z tym uczyń go pojedynczym poleceniem, zawijając w nim wywołanie powłoki ...
bash -c 'xdotool type date; xdotool key Return'
Teraz możesz także wykonywać inne czynności związane z powłoką ...
bash -c 'xdotool type "`date +"%Y-%m-%d_%T`"'
Zauważ, że polecenie „data” użyte w tym ostatnim wierszu zawiera nowy wiersz! i „xdotool” wyświetli to.
UWAGA: jeśli robisz to jako makro klawiatury, dodałbym jeszcze kilka opcji do „xdotool”, aby usprawnić to działanie ...
bash -c 'xdotool type --clearmodifiers -delay 0 "`date +"%Y-%m-%d_%T`"'
xdotool type $'word\r', gdzie$''ucieka\rdo czegoś takiego jak return (\ntutaj nie działa).