При разработке небольшой кросс-платформенной игры на С++ я столкнулся со следующей проблемой: когда игроки играют с геймпадом USB, не касаясь клавиатуры или мыши, компьютер автоматически спит во время игры.
В Windows это можно сделать легко, используя SetThreadExecutionState
. В OS X я думаю, что это можно сделать с помощью UpdateSystemActivity
, но пока не проверено.
Но проблема в том, что в Linux нет ничего похожего на общий API между DE. Я обнаружил, что в Gnome вы можете остановить автоматическое приостановку, используя вызовы DBus Inhibit()
и Uninhibit()
, но он работает только для Gnome.
Итак, существует ли программный путь перекрестного DE (или не-DE), например, если пользователь использует что-то вроде
dwm
илиawesome wm
), чтобы предотвратить систему Linux (используя Xorg и без root доступ конечно) от сна или включения скринсейвера без изменения файлов конфигурации пользователя?
PS: Не думайте, что это слишком сложно, но не знаю, как, к сожалению.