mirror of
https://github.com/hyprwm/Hyprland.git
synced 2025-08-14 11:35:46 -07:00
master: add option to keep master window position (#9537)
This commit is contained in:
@@ -1770,4 +1770,10 @@ inline static const std::vector<SConfigOptionDescription> CONFIG_OPTIONS = {
|
|||||||
.type = CONFIG_OPTION_BOOL,
|
.type = CONFIG_OPTION_BOOL,
|
||||||
.data = SConfigOptionDescription::SBoolData{false},
|
.data = SConfigOptionDescription::SBoolData{false},
|
||||||
},
|
},
|
||||||
|
SConfigOptionDescription{
|
||||||
|
.value = "master:always_keep_position",
|
||||||
|
.description = "whether to keep the master window in its configured position when there are no slave windows",
|
||||||
|
.type = CONFIG_OPTION_BOOL,
|
||||||
|
.data = SConfigOptionDescription::SBoolData{false},
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
@@ -562,6 +562,7 @@ CConfigManager::CConfigManager() {
|
|||||||
registerConfigVar("master:allow_small_split", Hyprlang::INT{0});
|
registerConfigVar("master:allow_small_split", Hyprlang::INT{0});
|
||||||
registerConfigVar("master:smart_resizing", Hyprlang::INT{1});
|
registerConfigVar("master:smart_resizing", Hyprlang::INT{1});
|
||||||
registerConfigVar("master:drop_at_cursor", Hyprlang::INT{1});
|
registerConfigVar("master:drop_at_cursor", Hyprlang::INT{1});
|
||||||
|
registerConfigVar("master:always_keep_position", Hyprlang::INT{0});
|
||||||
|
|
||||||
registerConfigVar("animations:enabled", Hyprlang::INT{1});
|
registerConfigVar("animations:enabled", Hyprlang::INT{1});
|
||||||
registerConfigVar("animations:first_launch_animation", Hyprlang::INT{1});
|
registerConfigVar("animations:first_launch_animation", Hyprlang::INT{1});
|
||||||
|
@@ -374,8 +374,22 @@ void CHyprMasterLayout::calculateWorkspace(PHLWORKSPACE pWorkspace) {
|
|||||||
|
|
||||||
// compute placement of master window(s)
|
// compute placement of master window(s)
|
||||||
if (WINDOWS == 1 && !centerMasterWindow) {
|
if (WINDOWS == 1 && !centerMasterWindow) {
|
||||||
|
static auto PALWAYSKEEPPOSITION = CConfigValue<Hyprlang::INT>("master:always_keep_position");
|
||||||
|
if (*PALWAYSKEEPPOSITION) {
|
||||||
|
const float WIDTH = WSSIZE.x * PMASTERNODE->percMaster;
|
||||||
|
float nextX = 0;
|
||||||
|
|
||||||
|
if (orientation == ORIENTATION_RIGHT)
|
||||||
|
nextX = WSSIZE.x - WIDTH;
|
||||||
|
else if (orientation == ORIENTATION_CENTER)
|
||||||
|
nextX = (WSSIZE.x - WIDTH) / 2;
|
||||||
|
|
||||||
|
PMASTERNODE->size = Vector2D(WIDTH, WSSIZE.y);
|
||||||
|
PMASTERNODE->position = WSPOS + Vector2D((double)nextX, 0.0);
|
||||||
|
} else {
|
||||||
PMASTERNODE->size = WSSIZE;
|
PMASTERNODE->size = WSSIZE;
|
||||||
PMASTERNODE->position = WSPOS;
|
PMASTERNODE->position = WSPOS;
|
||||||
|
}
|
||||||
|
|
||||||
applyNodeDataToWindow(PMASTERNODE);
|
applyNodeDataToWindow(PMASTERNODE);
|
||||||
return;
|
return;
|
||||||
|
Reference in New Issue
Block a user