Закрытие оконного менеджера и выключение из программы C#/Mono
Я разрабатываю программу на моно /C#, которая будет работать на встроенной платформе Linux с сенсорным экраном.
Я установил OpenBox поверх Raspbian, потому что он будет работать в "режиме киоска", и я стараюсь сделать его максимально простым.
Я планировал в программе два варианта:
- возможность выключить компьютер
- возможность закрыть диспетчер окон (openbox) и вернуться в терминал
Для первого варианта я пробовал использовать:
shutdown
poweroff
systcl poweroff
команды, но все они требуют особых привилегий, поэтому я не уверен, какой подход будет лучшим. Должен ли я создать сценарий bash с правами root и запускать этот сценарий из программы?
По второму варианту даже не знаю, с чего начать. Я настроил openbox так, чтобы его можно было закрыть с клавиатуры с помощью Ctrl + Alt + Backspace, но я знаю, как закрыть его из программы. Я пробовал использовать SendKeys с этой комбинацией клавиш, но не работает.
Я также попытался решение здесь, используя DBUS для C#, но я имею проблемы компиляции.
Не могли бы вы дать какой-нибудь совет?
1 ответ
Вы можете настроить свою программу sudo так, чтобы пользователь мог запускать программу без пароля. Добавьте в свой файл visudo:
<username-or-ALL> ALL=(ALL) NOPASSWD:/sbin/poweroff
На вашем месте я бы перезагрузился после настройки и до тестирования.