Давно пользуюсь данным инструментом, который позволяет гибко настроить запуск необходимых операций через комбинации клавиш (подробности). Установку можно осуществить через команду терминала:
sudo apt install -y autokey-gtk
Однако с некоторых пор иногда случайным образом возникает ситуация с выводом сообщения на экран, что autokey-gtk уже запущен (в настройках программы установлена галочка в поле "Automatically start Autokey at login"), pid этого процесса имеется, но программа не отвечает. Соответственно), отображающий работу программы значок в системном лотке (на панели, в трее) не появляется, а назначенные комбинации клавиш не работают.
Возникла идея осуществить "мягкий" запуск autikey-gtk, то есть запуск программы с задержкой. Попытка использовать скрипт sh, запускающий autokey-gtk, а потом выполняющий команду exit, привела лишь к частичному успеху. Все команды и паузы выполняются, но команда exit не проходит:
#!/bin/bash
sleep 65
autokey-gtk
sleep 10
exit
Примечание. Задержка перед запуском в 65 секунд выбрана из соображений запуска программы после отработки системной операции ротации логов работы, которая выполняется через 60 секунд после старта системы. Это можно наблюдать в диспетчере задач, если запускать его после прорисовки всех элементов рабочего стола. Смотреть sh -c /proc/self/fd/9
В диспетчере задач видно, что autokey.sh остался активным:
Первоначальным решением проблемы явилось создание скрипта autokey-stop.sh, "убивающего" процесс autokey.sh, и также стартующего с задержкой. То есть в "Настройки – Сеансы и запуск – Автозапуск" (xfce) имеется 2 задачи:
Auto Keys имеет команду запуска скрипта autokey.sh –
/home/user/scripts/autokey.sh
Auto Keys stop proc имеет команду удаления скрипта autokey.sh –
sh -c "sleep 75 && /home/user/scripts/autokey-stop.sh
Имеется в виду, что user – это пользователь системы с логином user.
Листинг autokey.sh :
#!/bin/bash
sleep 65
autokey-gtk
Листинг autokey-stop.sh :
#!/bin/bash
OUTPUT="$(pgrep autokey.sh)"
kill -15 ${OUTPUT}
exit
Примечание. Команда pidof autokey.sh не возвращает pid процесса autokey.sh, так как в понимании системы autokey.sh не является программой.
Затем, как оказалось, имеется способ завершения процесса autokey.sh без привлечения второго скрипта. Для этого после команды autokey-gtk необходимо добавить символ &.
Далее при просмотре каталога с настройками ~/.config/autokey, был найден файл протокола работы autokey.log Содержащиеся в нём записи касались всех сеансов работы autokey-gtk, начиная с момента установки в 2017 году (при каждом запуске autokey в файл добавлялись новые записи). Так как для анализа работы программы достаточно протокола за текущий день, а старые записи для меня являются малоинформативными, то в целях избежания его разрастания было принято решение об удалении autokey.log перед запуском autokey-gtk. При запуске программы файл autokey.log будет создан автоматически.
В результате скрипт autokey.sh принял вид:
#!/bin/bash
sleep 65
rm /home/user/.config/autokey/autokey.log
autokey-gtk &
sleep 10 && exit
Примечание. 10 секундная пауза была введена для "перестраховки" из соображений того, чтобы гарантировано запустился autokey-gtk. В принципе, можно обойтись и без паузы. Про каталог user выше было указано, что это домашний каталог пользователя системы с логином user.
После отработки всех команд в диспетчере задач остаётся только процесс autokey-gtk