diff --git a/src/config/legacy/ConfigManager.cpp b/src/config/legacy/ConfigManager.cpp index 3b397b42d..bbb63daf7 100644 --- a/src/config/legacy/ConfigManager.cpp +++ b/src/config/legacy/ConfigManager.cpp @@ -959,8 +959,6 @@ Hyprlang::CParseResult CConfigManager::reloadRules() { } void CConfigManager::postConfigReload(const Hyprlang::CParseResult& result) { - Config::watcher()->update(); - for (auto const& w : g_pCompositor->m_windows) { w->uncacheWindowDecos(); } diff --git a/src/config/lua/ConfigManager.cpp b/src/config/lua/ConfigManager.cpp index 685f925f4..3ad70b9ba 100644 --- a/src/config/lua/ConfigManager.cpp +++ b/src/config/lua/ConfigManager.cpp @@ -482,8 +482,6 @@ void CConfigManager::postConfigReload() { static auto PENABLESTDOUT = CConfigValue("debug.enable_stdout_logs"); static auto PAUTOGENERATED = CConfigValue("autogenerated"); - Config::watcher()->update(); - for (auto const& w : g_pCompositor->m_windows) { w->uncacheWindowDecos(); } diff --git a/src/config/supplementary/propRefresher/PropRefresher.cpp b/src/config/supplementary/propRefresher/PropRefresher.cpp index 0715594b6..675a68ef0 100644 --- a/src/config/supplementary/propRefresher/PropRefresher.cpp +++ b/src/config/supplementary/propRefresher/PropRefresher.cpp @@ -10,6 +10,7 @@ #include "../../../desktop/rule/Engine.hpp" #include "../../shared/monitor/MonitorRuleManager.hpp" +#include "../../shared/inotify/ConfigWatcher.hpp" using namespace Config; using namespace Config::Supplementary; @@ -92,6 +93,9 @@ void CPropRefresher::scheduleRefresh(PropRefreshBits prop) { } } + if (m_propsTripped & REFRESH_CONFIG_WATCHER) + Config::watcher()->update(); + m_scheduled = false; m_propsTripped = 0; }); diff --git a/src/config/supplementary/propRefresher/PropRefresher.hpp b/src/config/supplementary/propRefresher/PropRefresher.hpp index e8094753a..3d4d29e3a 100644 --- a/src/config/supplementary/propRefresher/PropRefresher.hpp +++ b/src/config/supplementary/propRefresher/PropRefresher.hpp @@ -6,7 +6,7 @@ #include "../../../helpers/memory/Memory.hpp" namespace Config::Supplementary { - enum ePropRefreshProp : uint8_t { + enum ePropRefreshProp : uint16_t { REFRESH_LAYOUTS = (1 << 0), REFRESH_INPUT_DEVICES = (1 << 1), REFRESH_SCREEN_SHADER = (1 << 2), @@ -15,6 +15,7 @@ namespace Config::Supplementary { REFRESH_WINDOW_STATES = (1 << 5) | REFRESH_RULES, REFRESH_MONITOR_STATES = (1 << 6) | REFRESH_LAYOUTS, REFRESH_CURSOR_ZOOMS = (1 << 7), + REFRESH_CONFIG_WATCHER = (1 << 8), REFRESH_ALL = std::numeric_limits>::max(), }; diff --git a/src/config/values/ConfigValues.cpp b/src/config/values/ConfigValues.cpp index ff23ab5d3..abf8ecab5 100644 --- a/src/config/values/ConfigValues.cpp +++ b/src/config/values/ConfigValues.cpp @@ -453,7 +453,7 @@ std::vector> Values::getConfigValues() { MS("misc:layers_hog_keyboard_focus", "If true, will make keyboard-interactive layers keep their focus on mouse move.", true), MS("misc:animate_manual_resizes", "If true, will animate manual window resizes/moves", false), MS("misc:animate_mouse_windowdragging", "If true, will animate windows being dragged by mouse.", false), - MS("misc:disable_autoreload", "If true, the config will not reload automatically on save.", false), + MS("misc:disable_autoreload", "If true, the config will not reload automatically on save.", false, {.refresh = Supplementary::REFRESH_CONFIG_WATCHER}), MS("misc:enable_swallow", "Enable window swallowing", false), MS("misc:swallow_regex", "The class regex to be used for windows that should be swallowed.", STRVAL_EMPTY), MS("misc:swallow_exception_regex", "The title regex to be used for windows that should not be swallowed.", STRVAL_EMPTY),