У вас есть параметры для основного ExecStart
команда. Я не знаю, но подозреваю, что -Post
и -Pre
их не используют.
Принятие 10 и 11 как действительных: SuccessExitStatus =
Просмотр 111 как общего прерывателя сделки: RestartPreventExitStatus =
В противном случае вы всегда можете написать сценарий оболочки быстрой оболочки, чтобы смягчить отсутствие поддержки в systemd.
Я бы сделал что-то вроде этого:
#!/bin/sh
if [ -f /run/my-script-is-dead ]
then
# to avoid very fast loop, sleep for a bit
sleep 10
exit 1
fi
# Run the script itself
/path/and/usual-command
# check result
RESULT=$?
if [ $RESULT -eq 10 ] || [ RESULT -eq 11 ]
then
exit 0
fi
if [ $RESULT -eq 111 ]
then
touch /run/my-script-is-dead
exit 1
fi
exit $RESULT
Но если поместить файл в папку / run
, он автоматически исчезнет при каждой перезагрузке. Если вам нужно что-то более постоянное, вам придется создать файл в другом месте (например, / var / cache / ...
)
Вы можете использовать xinput
для удаления мыши из Virtual core pointer
. Таким образом, курсор мыши (" основной указатель" )больше не будет им управляться, и основной протокол не будет производить никаких событий мыши.
Вы по-прежнему можете получать события мыши либо на входном слое, как вы уже делаете (через/dev/input
). Обратите внимание, что это не движение X, а один слой ниже (до того, как evdev
или аналогичные X-драйверы обработают его ).
Или вы можете получать события ввода X для отсоединенной мыши, используя расширение XINPUT
X. См. xinput --test
и xinput --test-xi2
пример программы, которая это делает.