diff --git a/src/config/ConfigDescriptions.hpp b/src/config/ConfigDescriptions.hpp index ee8fa2400..20efb5a3e 100644 --- a/src/config/ConfigDescriptions.hpp +++ b/src/config/ConfigDescriptions.hpp @@ -1327,6 +1327,12 @@ inline static const std::vector CONFIG_OPTIONS = { .type = CONFIG_OPTION_BOOL, .data = SConfigOptionDescription::SBoolData{true}, }, + SConfigOptionDescription{ + .value = "misc:disable_scale_notification", + .description = "disables notification popup when a monitor fails to set a suitable scale and falls back to suggested", + .type = CONFIG_OPTION_BOOL, + .data = SConfigOptionDescription::SBoolData{false}, + }, /* * binds: diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index d7d29763a..01f910d6e 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -522,6 +522,7 @@ CConfigManager::CConfigManager() { registerConfigVar("misc:enable_anr_dialog", Hyprlang::INT{1}); registerConfigVar("misc:anr_missed_pings", Hyprlang::INT{1}); registerConfigVar("misc:screencopy_force_8b", Hyprlang::INT{1}); + registerConfigVar("misc:disable_scale_notification", Hyprlang::INT{0}); registerConfigVar("group:insert_after_current", Hyprlang::INT{1}); registerConfigVar("group:focus_removed_window", Hyprlang::INT{1}); diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp index 4a9f93ffe..fbb2735fa 100644 --- a/src/helpers/Monitor.cpp +++ b/src/helpers/Monitor.cpp @@ -1,6 +1,7 @@ #include "Monitor.hpp" #include "MiscFunctions.hpp" #include "../macros.hpp" +#include "SharedDefs.hpp" #include "math/Math.hpp" #include "../protocols/ColorManagement.hpp" #include "../Compositor.hpp" @@ -905,11 +906,12 @@ bool CMonitor::applyMonitorRule(SMonitorRule* pMonitorRule, bool force) { } else { if (!autoScale) { Debug::log(ERR, "Invalid scale passed to monitor, {} found suggestion {}", m_scale, searchScale); - g_pConfigManager->addParseError( - std::format("Invalid scale passed to monitor {}, failed to find a clean divisor. Suggested nearest scale: {:5f}", m_name, searchScale)); - m_scale = getDefaultScale(); - } else - m_scale = searchScale; + static auto PDISABLENOTIFICATION = CConfigValue("misc:disable_scale_notification"); + if (!*PDISABLENOTIFICATION) + g_pHyprNotificationOverlay->addNotification(std::format("Invalid scale passed to monitor: {}, using suggested scale: {}", m_scale, searchScale), + CHyprColor(1.0, 0.0, 0.0, 1.0), 5000, ICON_WARNING); + } + m_scale = searchScale; } } }