diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp index dc2d3d48..6ca263ee 100644 --- a/src/config/ConfigManager.cpp +++ b/src/config/ConfigManager.cpp @@ -84,6 +84,7 @@ void CConfigManager::setDefaultVars() { configValues["master:special_scale_factor"].floatValue = 0.8f; configValues["master:new_is_master"].intValue = 1; + configValues["master:new_on_top"].intValue = 0; configValues["animations:enabled"].intValue = 1; configValues["animations:speed"].floatValue = 7.f; diff --git a/src/layout/MasterLayout.cpp b/src/layout/MasterLayout.cpp index f88ee08f..02b27598 100644 --- a/src/layout/MasterLayout.cpp +++ b/src/layout/MasterLayout.cpp @@ -37,7 +37,9 @@ void CHyprMasterLayout::onWindowCreatedTiling(CWindow* pWindow) { if (pWindow->m_bIsFloating) return; - const auto PNODE = &m_lMasterNodesData.emplace_back(); + static auto *const PNEWTOP = &g_pConfigManager->getConfigValuePtr("master:new_on_top")->intValue; + + const auto PNODE = *PNEWTOP ? &m_lMasterNodesData.emplace_front() : &m_lMasterNodesData.emplace_back(); PNODE->workspaceID = pWindow->m_iWorkspaceID; PNODE->pWindow = pWindow;