diff --git a/flake.lock b/flake.lock index 486168c..690897b 100644 --- a/flake.lock +++ b/flake.lock @@ -152,11 +152,11 @@ ] }, "locked": { - "lastModified": 1752814804, - "narHash": "sha256-irfg7lnfEpJY+3Cffkluzp2MTVw1Uq9QGxFp6qadcXI=", + "lastModified": 1753181343, + "narHash": "sha256-CLQfNtUqirNVSYoW/kYbvL4PeeNasmZonaPnjO3+1YQ=", "owner": "nix-community", "repo": "home-manager", - "rev": "d0300c8808e41da81d6edfc202f3d3833c157daf", + "rev": "0cdfcdbb525b77b951c889b6131047bc374f48fe", "type": "github" }, "original": { @@ -167,11 +167,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1752687322, - "narHash": "sha256-RKwfXA4OZROjBTQAl9WOZQFm7L8Bo93FQwSJpAiSRvo=", + "lastModified": 1752950548, + "narHash": "sha256-NS6BLD0lxOrnCiEOcvQCDVPXafX1/ek1dfJHX1nUIzc=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "6e987485eb2c77e5dcc5af4e3c70843711ef9251", + "rev": "c87b95e25065c028d31a94f06a62927d18763fdf", "type": "github" }, "original": { @@ -189,11 +189,11 @@ ] }, "locked": { - "lastModified": 1752908641, - "narHash": "sha256-7fSP4+p5QjWXFbnD4NeVQjtdCSsTMX2yAP1eNDooq4E=", + "lastModified": 1753254080, + "narHash": "sha256-Z9Q6tI23epzbp9Ox/ujjDdoXXO2OIRJctjPDgnjmgf4=", "owner": "nix-community", "repo": "NUR", - "rev": "ea63ce63073a11274ef327c5eb7f2ebb67606ebe", + "rev": "ec8e1c679047de6036c9f9c845f0ae5ff6bb8c49", "type": "github" }, "original": { @@ -212,11 +212,11 @@ ] }, "locked": { - "lastModified": 1752555591, - "narHash": "sha256-3u29/v6VCHnaXjkMmjgwIGzR4Oul9EVHqxgJB6xTN0w=", + "lastModified": 1753078133, + "narHash": "sha256-z+cvobe/+6pSVmwVrI+/k4lt7CjsQtfhlMaAlLQcSPY=", "owner": "icewind1991", "repo": "nvidia-patch-nixos", - "rev": "1140fd66d2f7e0be1a72ac9fdc32fffe4bb371e5", + "rev": "b5bb7576a5a951cea1a46703f488ac76fa827876", "type": "github" }, "original": { @@ -288,11 +288,11 @@ ] }, "locked": { - "lastModified": 1752381641, - "narHash": "sha256-R2iDZb94RosuCeuIukacZVVXxzWYr4jn/QI/ax15nW8=", + "lastModified": 1752986956, + "narHash": "sha256-1AK8+W7d5eNyGRkcWHa+9oIChLJbY6jt7ujSJo+ft4M=", "owner": "Gerg-L", "repo": "spicetify-nix", - "rev": "8f9fd947c52aa6adb6bafe72516eccf186708954", + "rev": "51ac0aee7e7ee21ca0874b913f07f9004bc9311f", "type": "github" }, "original": { @@ -323,11 +323,11 @@ ] }, "locked": { - "lastModified": 1752909129, - "narHash": "sha256-Eh8FkMvGRaY71BU/oyZTTzt9RsBIq2E6j0r3eLZ/2kY=", + "lastModified": 1753006367, + "narHash": "sha256-tzbhc4XttkyEhswByk5R38l+ztN9UDbnj0cTcP6Hp9A=", "owner": "numtide", "repo": "treefmt-nix", - "rev": "0043b95d80b5bf6d61e84d237e2007727f4dd38d", + "rev": "421b56313c65a0815a52b424777f55acf0b56ddf", "type": "github" }, "original": { diff --git a/hosts/common/configs/user/gui/hyprland/auto-center.patch b/hosts/common/configs/user/gui/hyprland/auto-center.patch deleted file mode 100644 index acd7e1b..0000000 --- a/hosts/common/configs/user/gui/hyprland/auto-center.patch +++ /dev/null @@ -1,78 +0,0 @@ -diff --git a/src/Compositor.cpp b/src/Compositor.cpp -index c6593923..b4d3aaea 100644 ---- a/src/Compositor.cpp -+++ b/src/Compositor.cpp -@@ -2890,6 +2890,30 @@ void CCompositor::arrangeMonitors() { - case eAutoDirs::DIR_AUTO_LEFT: newPosition.x = maxXOffsetLeft - m->m_size.x; break; - case eAutoDirs::DIR_AUTO_RIGHT: - case eAutoDirs::DIR_AUTO_NONE: newPosition.x = maxXOffsetRight; break; -+ case eAutoDirs::DIR_AUTO_CENTER_UP: { -+ int width = maxXOffsetRight - maxXOffsetLeft; -+ newPosition.y = maxYOffsetUp - m->m_size.y; -+ newPosition.x = maxXOffsetLeft + (width - m->m_size.x) / 2; -+ break; -+ } -+ case eAutoDirs::DIR_AUTO_CENTER_DOWN: { -+ int width = maxXOffsetRight - maxXOffsetLeft; -+ newPosition.y = maxYOffsetDown; -+ newPosition.x = maxXOffsetLeft + (width - m->m_size.x) / 2; -+ break; -+ } -+ case eAutoDirs::DIR_AUTO_CENTER_LEFT: { -+ int height = maxYOffsetDown - maxYOffsetUp; -+ newPosition.x = maxXOffsetLeft - m->m_size.x; -+ newPosition.y = maxYOffsetUp + (height - m->m_size.y) / 2; -+ break; -+ } -+ case eAutoDirs::DIR_AUTO_CENTER_RIGHT: { -+ int height = maxYOffsetDown - maxYOffsetUp; -+ newPosition.x = maxXOffsetRight; -+ newPosition.y = maxYOffsetUp + (height - m->m_size.y) / 2; -+ break; -+ } - default: UNREACHABLE(); - } - Debug::log(LOG, "arrangeMonitors: {} auto {:j}", m->m_name, m->m_position); -diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp -index f5f0bed3..3c988a53 100644 ---- a/src/config/ConfigManager.cpp -+++ b/src/config/ConfigManager.cpp -@@ -2046,10 +2046,20 @@ std::optional CConfigManager::handleMonitor(const std::string& comm - newrule.autoDir = eAutoDirs::DIR_AUTO_UP; - else if (ARGS[2] == "auto-down") - newrule.autoDir = eAutoDirs::DIR_AUTO_DOWN; -+ else if (ARGS[2] == "auto-center-right") -+ newrule.autoDir = eAutoDirs::DIR_AUTO_CENTER_RIGHT; -+ else if (ARGS[2] == "auto-center-left") -+ newrule.autoDir = eAutoDirs::DIR_AUTO_CENTER_LEFT; -+ else if (ARGS[2] == "auto-center-up") -+ newrule.autoDir = eAutoDirs::DIR_AUTO_CENTER_UP; -+ else if (ARGS[2] == "auto-center-down") -+ newrule.autoDir = eAutoDirs::DIR_AUTO_CENTER_DOWN; - else { - Debug::log(WARN, - "Invalid auto direction. Valid options are 'auto'," -- "'auto-up', 'auto-down', 'auto-left', and 'auto-right'."); -+ "'auto-up', 'auto-down', 'auto-left', 'auto-right'," -+ "'auto-center-up', 'auto-center-down'," -+ "'auto-center-left', and 'auto-center-right'."); - error += "invalid auto direction "; - } - } else { -diff --git a/src/helpers/Monitor.hpp b/src/helpers/Monitor.hpp -index 31777b0c..019a5547 100644 ---- a/src/helpers/Monitor.hpp -+++ b/src/helpers/Monitor.hpp -@@ -25,7 +25,11 @@ enum eAutoDirs : uint8_t { - DIR_AUTO_UP, - DIR_AUTO_DOWN, - DIR_AUTO_LEFT, -- DIR_AUTO_RIGHT -+ DIR_AUTO_RIGHT, -+ DIR_AUTO_CENTER_UP, -+ DIR_AUTO_CENTER_DOWN, -+ DIR_AUTO_CENTER_LEFT, -+ DIR_AUTO_CENTER_RIGHT - }; - - enum eCMType : uint8_t { diff --git a/hosts/common/configs/user/gui/hyprland/default.nix b/hosts/common/configs/user/gui/hyprland/default.nix index 35bf0f7..29dfce6 100644 --- a/hosts/common/configs/user/gui/hyprland/default.nix +++ b/hosts/common/configs/user/gui/hyprland/default.nix @@ -10,8 +10,7 @@ (final: prev: { hyprland = prev.hyprland.overrideAttrs (oldAttrs: { patches = oldAttrs.patches or [ ] ++ [ - ./auto-center.patch - ./maxwidth-resolution-mode.patch + ./fix-maxwidth-resolution-mode.patch ]; }); }) diff --git a/hosts/common/configs/user/gui/hyprland/fix-maxwidth-resolution-mode.patch b/hosts/common/configs/user/gui/hyprland/fix-maxwidth-resolution-mode.patch new file mode 100644 index 0000000..6292140 --- /dev/null +++ b/hosts/common/configs/user/gui/hyprland/fix-maxwidth-resolution-mode.patch @@ -0,0 +1,13 @@ +diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp +index 635c7977..80093c0d 100644 +--- a/src/config/ConfigManager.cpp ++++ b/src/config/ConfigManager.cpp +@@ -2091,6 +2091,8 @@ bool CMonitorRuleParser::parseMode(const std::string& value) { + m_rule.resolution = Vector2D(-1, -1); + else if (value.starts_with("highres")) + m_rule.resolution = Vector2D(-1, -2); ++ else if (value.starts_with("maxwidth")) ++ m_rule.resolution = Vector2D(-1, -3); + else if (parseModeLine(value, m_rule.drmMode)) { + m_rule.resolution = Vector2D(m_rule.drmMode.hdisplay, m_rule.drmMode.vdisplay); + m_rule.refreshRate = float(m_rule.drmMode.vrefresh) / 1000; diff --git a/hosts/common/configs/user/gui/hyprland/maxwidth-resolution-mode.patch b/hosts/common/configs/user/gui/hyprland/maxwidth-resolution-mode.patch deleted file mode 100644 index 9b0047f..0000000 --- a/hosts/common/configs/user/gui/hyprland/maxwidth-resolution-mode.patch +++ /dev/null @@ -1,44 +0,0 @@ -diff --git a/src/config/ConfigManager.cpp b/src/config/ConfigManager.cpp -index f5f0bed3..cfe39b70 100644 ---- a/src/config/ConfigManager.cpp -+++ b/src/config/ConfigManager.cpp -@@ -2013,6 +2013,8 @@ std::optional CConfigManager::handleMonitor(const std::string& comm - newrule.resolution = Vector2D(-1, -1); - } else if (ARGS[1].starts_with("highres")) { - newrule.resolution = Vector2D(-1, -2); -+ } else if (ARGS[1].starts_with("maxwidth")) { -+ newrule.resolution = Vector2D(-1, -3); - } else if (parseModeLine(ARGS[1], newrule.drmMode)) { - newrule.resolution = Vector2D(newrule.drmMode.hdisplay, newrule.drmMode.vdisplay); - newrule.refreshRate = float(newrule.drmMode.vrefresh) / 1000; -diff --git a/src/helpers/Monitor.cpp b/src/helpers/Monitor.cpp -index 4dc0942d..72a221f5 100644 ---- a/src/helpers/Monitor.cpp -+++ b/src/helpers/Monitor.cpp -@@ -515,7 +515,7 @@ bool CMonitor::applyMonitorRule(SMonitorRule* pMonitorRule, bool force) { - } else if (RULE->resolution == Vector2D(-1, -2)) { - requestedStr = "highres"; - -- // sort prioritizing resultion 1st and refresh rate 2nd, then add best 3 -+ // sort prioritizing resolution 1st and refresh rate 2nd, then add best 3 - addBest3Modes([](auto const& a, auto const& b) { - if (a->pixelSize.x > b->pixelSize.x && a->pixelSize.y > b->pixelSize.y) - return true; -@@ -524,6 +524,17 @@ bool CMonitor::applyMonitorRule(SMonitorRule* pMonitorRule, bool force) { - return true; - return false; - }); -+ } else if (RULE->resolution == Vector2D(-1, -3)) { -+ requestedStr = "maxwidth"; -+ -+ // sort prioritizing widest resolution 1st and refresh rate 2nd, then add best 3 -+ addBest3Modes([](auto const& a, auto const& b) { -+ if (a->pixelSize.x > b->pixelSize.x) -+ return true; -+ if (a->pixelSize.x == b->pixelSize.x && std::round(a->refreshRate) > std::round(b->refreshRate)) -+ return true; -+ return false; -+ }); - } else if (RULE->resolution != Vector2D()) { - // user requested mode - requestedStr = std::format("{:X0}@{:.2f}Hz", RULE->resolution, RULE->refreshRate);