diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index e62db718..7edf3b4b 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -45,11 +45,22 @@ void CMonitor::onConnect(bool noRule) { }); listeners.state = output->events.state.registerListener([this](std::any d) { + auto E = std::any_cast(d); + + if (E.size == Vector2D{}) { + // an indication to re-set state + // we can't do much for createdByUser displays I think + if (createdByUser) + return; + + Debug::log(LOG, "Reapplying monitor rule for {} from a state request", szName); + g_pHyprRenderer->applyMonitorRule(this, &activeMonitorRule, true); + return; + } + if (!createdByUser) return; - auto E = std::any_cast(d); - const auto SIZE = E.size; forceSize = SIZE;