From f0fe0c25d6474a852e1d7f1af62b7854ac461af6 Mon Sep 17 00:00:00 2001
From: vaxerski <vaxry@vaxry.net>
Date: Sun, 14 Aug 2022 23:26:18 +0200
Subject: [PATCH] added config-only to hyprctl reload

---
 src/config/ConfigManager.cpp |  6 +++++-
 src/config/ConfigManager.hpp |  1 +
 src/debug/HyprCtl.cpp        | 13 ++++++++++---
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp
index 9f38f16b3..a640a4d57 100644
--- a/src/config/ConfigManager.cpp
+++ b/src/config/ConfigManager.cpp
@@ -1079,7 +1079,8 @@ void CConfigManager::loadConfigLoadVars() {
     // Set the modes for all monitors as we configured them
     // not on first launch because monitors might not exist yet
     // and they'll be taken care of in the newMonitor event
-    if (!isFirstLaunch) {
+    // ignore if nomonitorreload is set
+    if (!isFirstLaunch && !m_bNoMonitorReload) {
         m_bWantsMonitorReload = true;
 
         // check
@@ -1099,6 +1100,9 @@ void CConfigManager::loadConfigLoadVars() {
     // Force the compositor to fully re-render all monitors
     for (auto& m : g_pCompositor->m_vMonitors)
         m->forceFullFrames = 2;
+    
+    // Reset no monitor reload
+    m_bNoMonitorReload = false;
 }
 
 void CConfigManager::tick() {
diff --git a/src/config/ConfigManager.hpp b/src/config/ConfigManager.hpp
index a4e4091b6..87cbd9567 100644
--- a/src/config/ConfigManager.hpp
+++ b/src/config/ConfigManager.hpp
@@ -97,6 +97,7 @@ public:
     void                performMonitorReload();
     bool                m_bWantsMonitorReload = false;
     bool                m_bForceReload = false;
+    bool                m_bNoMonitorReload = false;
     void                ensureDPMS();
 
     std::string         parseKeyword(const std::string&, const std::string&, bool dynamic = false);
diff --git a/src/debug/HyprCtl.cpp b/src/debug/HyprCtl.cpp
index b0d0d86dd..21f4e23d0 100644
--- a/src/debug/HyprCtl.cpp
+++ b/src/debug/HyprCtl.cpp
@@ -505,9 +505,16 @@ std::string dispatchKeyword(std::string in) {
     return retval;
 }
 
-std::string reloadRequest() {
+std::string reloadRequest(std::string request) {
+    
+    const auto REQMODE = request.substr(request.find_last_of(' ') + 1);
+
     g_pConfigManager->m_bForceReload = true;
 
+    if (REQMODE == "config-only") {
+        g_pConfigManager->m_bNoMonitorReload = true;
+    }
+
     return "ok";
 }
 
@@ -681,8 +688,8 @@ std::string getReply(std::string request) {
         return layersRequest(format);
     else if (request == "version")
         return versionRequest(format);
-    else if (request == "reload")
-        return reloadRequest();
+    else if (request.find("reload") == 0)
+        return reloadRequest(request);
     else if (request == "devices")
         return devicesRequest(format);
     else if (request == "splash")