Вопрос
Есть ли способ предотвратить запуск X-сеанса заставки, переход в режим энергосбережения или выполнение пустого экрана из кода?
Над чем я работаю с
Язык: C / C ++ GUI framework: GTK3 Оборудование: Raspberry Pi 3B Программное обеспечение: Raspbian 10 - Buster
Моя программа должна работать на экране в течение длительного времени (до 12 часов ) с запуском GUI без взаимодействия с пользователем. GUI действует как монитор состояния для систем в поле (если экран становится черным, что-то пошло не так).
Что я знаю
GTK3 может определить, активна ли заставка
GTK3 имеет логическое свойство, чтобы сообщать, активна ли заставка системы (см. здесь ), но никаких других ссылок в документации нет.
Raspbian использует гашение экрана
Raspbian не поставляется с xscreensaver
или другим пакетом для управления временем выключения экрана. Вместо этого он полагается в основном на X для «пустого экрана». Этим можно управлять с помощью команды xset
от имени суперпользователя. Канонический способ сделать это указан в c Stack Exchange для оборудования ( здесь ).
Конечным пользователям нельзя доверять
В моем случае программа будет использоваться людьми, которые плохо разбираются в компьютерах. Результат должен быть удобным для пользователя и не предполагать, что пользователь когда-либо коснется терминала, не говоря уже о внесении постоянных изменений в конфигурацию запуска X
. Хотя одним из вариантов было бы распространять программу в виде настроенного образа диска Raspbian, я хотел бы изучить другие варианты.
Мне нужен пример
Хотя было несколько мест, где можно было начать использовать это вопрос , реализовать их проблематично c. Когда я пытаюсь использовать следующий MWE с прокомментированной строкой и без нее, ничего не происходит. Не могу смоделировать функцию гашения экрана.
#include <X11/extensions/scrnsaver.h>
int main() {
// XScreenSaverSuspend;
XForceScreenSaver;
usleep(1000000);
return 0;
}