Закрытие оконного менеджера и выключение из программы C#/Mono

Я разрабатываю программу на моно /C#, которая будет работать на встроенной платформе Linux с сенсорным экраном.

Я установил OpenBox поверх Raspbian, потому что он будет работать в "режиме киоска", и я стараюсь сделать его максимально простым.

Я планировал в программе два варианта:

  1. возможность выключить компьютер
  2. возможность закрыть диспетчер окон (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

Может увидеть это

На вашем месте я бы перезагрузился после настройки и до тестирования.

Другие вопросы по тегам