From d6b2be5487d575c86e9278c330b984e4a767a1cb Mon Sep 17 00:00:00 2001 From: William Brawner Date: Tue, 3 Sep 2024 12:04:09 -0600 Subject: [PATCH] Add suspend and shutdown options to screensaver --- es-app/src/SystemScreenSaver.cpp | 10 ++++++++++ es-app/src/guis/GuiGeneralScreensaverOptions.cpp | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/es-app/src/SystemScreenSaver.cpp b/es-app/src/SystemScreenSaver.cpp index dbea48b69..bae9b1348 100644 --- a/es-app/src/SystemScreenSaver.cpp +++ b/es-app/src/SystemScreenSaver.cpp @@ -23,6 +23,7 @@ #include "BrightnessControl.h" #include "ImageIO.h" #include "utils/Randomizer.h" +#include "platform.h" #define FADE_TIME 500 @@ -183,6 +184,15 @@ void SystemScreenSaver::startScreenSaver() // No videos. Just use a standard screensaver mState = STATE_SCREENSAVER_ACTIVE; mCurrentGame = NULL; + + if (screensaver_behavior == "suspend") + { + runSystemCommand("/usr/bin/systemctl suspend", "", nullptr); + } + else if (screensaver_behavior == "shutdown") + { + runSystemCommand("/usr/bin/systemctl poweroff", "", nullptr); + } } void SystemScreenSaver::stopScreenSaver() diff --git a/es-app/src/guis/GuiGeneralScreensaverOptions.cpp b/es-app/src/guis/GuiGeneralScreensaverOptions.cpp index 67c44790f..d51a66df5 100644 --- a/es-app/src/guis/GuiGeneralScreensaverOptions.cpp +++ b/es-app/src/guis/GuiGeneralScreensaverOptions.cpp @@ -42,7 +42,7 @@ GuiGeneralScreensaverOptions::GuiGeneralScreensaverOptions(Window* window, int s // Screensaver behavior auto ctlBehavior = std::make_shared< OptionListComponent >(mWindow, _("SCREENSAVER TYPE"), false); - ctlBehavior->addRange({ "dim", "black", "random video", "slideshow" }, ssBehavior); + ctlBehavior->addRange({ "dim", "black", "random video", "slideshow", "suspend", "shutdown" }, ssBehavior); addWithLabel(_("SCREENSAVER TYPE"), ctlBehavior, selectItem == 1); ctlBehavior->setSelectedChangedCallback([this](const std::string& name) {