diff --git a/src/managers/KeybindManager.cpp b/src/managers/KeybindManager.cpp index 42ce6b895..4c8e1d6f6 100644 --- a/src/managers/KeybindManager.cpp +++ b/src/managers/KeybindManager.cpp @@ -36,6 +36,7 @@ CKeybindManager::CKeybindManager() { m_mDispatchers["pass"] = pass; m_mDispatchers["layoutmsg"] = layoutmsg; m_mDispatchers["toggleopaque"] = toggleOpaque; + m_mDispatchers["dpms"] = dpms; m_tScrollTimer.reset(); } @@ -1324,4 +1325,16 @@ void CKeybindManager::toggleOpaque(std::string unused) { PWINDOW->m_sAdditionalConfigData.forceOpaque = !PWINDOW->m_sAdditionalConfigData.forceOpaque; g_pHyprRenderer->damageWindow(PWINDOW); -} \ No newline at end of file +} + +void CKeybindManager::dpms(std::string arg) { + bool enable = arg == "on"; + + for (auto& m : g_pCompositor->m_vMonitors) { + wlr_output_enable(m->output, enable); + + if (!wlr_output_commit(m->output)) { + Debug::log(ERR, "Couldn't commit output %s", m->szName.c_str()); + } + } +} diff --git a/src/managers/KeybindManager.hpp b/src/managers/KeybindManager.hpp index 2e97d7474..b938c5573 100644 --- a/src/managers/KeybindManager.hpp +++ b/src/managers/KeybindManager.hpp @@ -98,6 +98,7 @@ private: static void pass(std::string); static void layoutmsg(std::string); static void toggleOpaque(std::string); + static void dpms(std::string); friend class CCompositor; };