--- /dev/null
+--- hyprland-source/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp 2026-10-28 11:42:46.000000000 +0100
++++ hyprland-source-b/src/layout/algorithm/tiled/dwindle/DwindleAlgorithm.cpp 2026-11-04 10:49:14.858877434 +0100
+@@ -755,16 +755,19 @@
+
+ auto delta = getPlusMinusKeywordResult(std::string{ratio}, 0.F);
+
+- if (!CURRENT_NODE || !CURRENT_NODE->pParent)
++ // By default, change the focused window's parent split.
++ // With "root", change the outermost split of this workspace.
++ auto targetNode = ARGS[3] == "root" ? getMasterNode() : (CURRENT_NODE ? CURRENT_NODE->pParent.lock() : nullptr);
++
++ if (!targetNode || !targetNode->isNode)
+ return Config::configError("cannot alter split ratio on no / single node", Config::eConfigErrorLevel::WARNING, Config::eConfigErrorCode::INVALID_STATE);
+
+ if (!delta)
+ return Config::configError(std::format("failed to parse \"{}\" as a delta", ratio), Config::eConfigErrorLevel::ERROR, Config::eConfigErrorCode::INVALID_ARGUMENT);
+
+- const float newRatio = exact ? *delta : CURRENT_NODE->pParent->splitRatio + *delta;
+- CURRENT_NODE->pParent->splitRatio = std::clamp(newRatio, 0.1F, 1.9F);
+-
+- CURRENT_NODE->pParent->recalcSizePosRecursive();
++ const float newRatio = exact ? *delta : targetNode->splitRatio + *delta;
++ targetNode->splitRatio = std::clamp(newRatio, 0.1F, 1.9F);
++ targetNode->recalcSizePosRecursive();
+ } else
+ return Config::configError(std::format("Unknown dwindle layoutmsg: {}", sv), Config::eConfigErrorLevel::ERROR, Config::eConfigErrorCode::INVALID_ARGUMENT);
+