From b5ef049ea153e476057987ef11ccbdbbfb655c15 Mon Sep 17 00:00:00 2001 From: Zetta1 Reid0 <79805086+Zetta1Reid0@users.noreply.github.com> Date: Thu, 1 May 2025 14:29:06 +0300 Subject: [PATCH] master: Change center_master_slaves_on_right to center_master_fallback (#10201) * Change center_master_slaves_on_right to center_master_fallback --- src/config/ConfigDescriptions.hpp | 10 ++++------ src/config/ConfigManager.cpp | 2 +- src/layout/MasterLayout.cpp | 18 ++++++++++++------ 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/config/ConfigDescriptions.hpp b/src/config/ConfigDescriptions.hpp index 39c1b5225..9214772d6 100644 --- a/src/config/ConfigDescriptions.hpp +++ b/src/config/ConfigDescriptions.hpp @@ -1811,12 +1811,10 @@ inline static const std::vector CONFIG_OPTIONS = { .type = CONFIG_OPTION_INT, .data = SConfigOptionDescription::SRangeData{2, 0, 10}, //##TODO RANGE? }, - SConfigOptionDescription{ - .value = "master:center_master_slaves_on_right", - .description = "set if the slaves should appear on right of master when slave_count_for_center_master > 2", - .type = CONFIG_OPTION_BOOL, - .data = SConfigOptionDescription::SBoolData{true}, - }, + SConfigOptionDescription{.value = "master:center_master_fallback", + .description = "Set fallback for center master when slaves are less than slave_count_for_center_master, can be left ,right ,top ,bottom", + .type = CONFIG_OPTION_STRING_SHORT, + .data = SConfigOptionDescription::SStringData{"left"}}, SConfigOptionDescription{ .value = "master:center_ignores_reserved", .description = "centers the master window on monitor ignoring reserved areas", diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index f84b868f6..ea79f6147 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -597,7 +597,7 @@ CConfigManager::CConfigManager() { registerConfigVar("master:mfact", {0.55f}); registerConfigVar("master:new_status", {"slave"}); registerConfigVar("master:slave_count_for_center_master", Hyprlang::INT{2}); - registerConfigVar("master:center_master_slaves_on_right", Hyprlang::INT{1}); + registerConfigVar("master:center_master_fallback", {"left"}); registerConfigVar("master:center_ignores_reserved", Hyprlang::INT{0}); registerConfigVar("master:new_on_active", {"none"}); registerConfigVar("master:new_on_top", Hyprlang::INT{0}); diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp index e50b926e5..d2aa7568a 100644 --- a/src/layout/MasterLayout.cpp +++ b/src/layout/MasterLayout.cpp @@ -333,7 +333,7 @@ void CHyprMasterLayout::calculateWorkspace(PHLWORKSPACE pWorkspace) { eOrientation orientation = getDynamicOrientation(pWorkspace); bool centerMasterWindow = false; static auto SLAVECOUNTFORCENTER = CConfigValue("master:slave_count_for_center_master"); - static auto CMSLAVESONRIGHT = CConfigValue("master:center_master_slaves_on_right"); + static auto CMFALLBACK = CConfigValue("master:center_master_fallback"); static auto PIGNORERESERVED = CConfigValue("master:center_ignores_reserved"); static auto PSMARTRESIZING = CConfigValue("master:smart_resizing"); @@ -347,10 +347,16 @@ void CHyprMasterLayout::calculateWorkspace(PHLWORKSPACE pWorkspace) { if (STACKWINDOWS >= *SLAVECOUNTFORCENTER) { centerMasterWindow = true; } else { - if (*CMSLAVESONRIGHT) + if (*CMFALLBACK == "left") orientation = ORIENTATION_LEFT; - else + else if (*CMFALLBACK == "right") orientation = ORIENTATION_RIGHT; + else if (*CMFALLBACK == "top") + orientation = ORIENTATION_TOP; + else if (*CMFALLBACK == "bottom") + orientation = ORIENTATION_BOTTOM; + else + orientation = ORIENTATION_LEFT; } } @@ -538,11 +544,11 @@ void CHyprMasterLayout::calculateWorkspace(PHLWORKSPACE pWorkspace) { float nextY = 0; float nextYL = 0; float nextYR = 0; - bool onRight = *CMSLAVESONRIGHT; + bool onRight = *CMFALLBACK == "right"; int slavesLeftL = 1 + (slavesLeft - 1) / 2; int slavesLeftR = slavesLeft - slavesLeftL; - if (*CMSLAVESONRIGHT) { + if (onRight) { slavesLeftR = 1 + (slavesLeft - 1) / 2; slavesLeftL = slavesLeft - slavesLeftR; } @@ -565,7 +571,7 @@ void CHyprMasterLayout::calculateWorkspace(PHLWORKSPACE pWorkspace) { onRight = !onRight; } - onRight = *CMSLAVESONRIGHT; + onRight = *CMFALLBACK == "right"; } for (auto& nd : m_masterNodesData) {