From 7c380cc9236260973ac742a044a49b267378caa7 Mon Sep 17 00:00:00 2001 From: Crony Akatsuki Date: Wed, 4 Feb 2026 11:41:22 +0100 Subject: [PATCH] feat: add ability to set specific layout per workspace. --- flake.lock | 92 +++++++++++++++++-------- flake.nix | 6 ++ modules/linux/home-manager/hyprland.nix | 11 ++- 3 files changed, 81 insertions(+), 28 deletions(-) diff --git a/flake.lock b/flake.lock index 9c2fe03..f7e5cee 100644 --- a/flake.lock +++ b/flake.lock @@ -1004,6 +1004,27 @@ "type": "github" } }, + "hyprWorkspaceLayouts": { + "inputs": { + "hyprland": [ + "hyprland" + ], + "nixpkgs": "nixpkgs_4" + }, + "locked": { + "lastModified": 1766170967, + "narHash": "sha256-MolprWAgKsYwRSsat5T1VtLGLgfVFQdwNs/BNi/K7+4=", + "owner": "zakk4223", + "repo": "hyprWorkspaceLayouts", + "rev": "d90c6c37d3d2b51b774aa3914b0b2e00c5c57771", + "type": "github" + }, + "original": { + "owner": "zakk4223", + "repo": "hyprWorkspaceLayouts", + "type": "github" + } + }, "hyprcursor": { "inputs": { "hyprlang": [ @@ -1102,7 +1123,7 @@ "hyprutils": "hyprutils", "hyprwayland-scanner": "hyprwayland-scanner", "hyprwire": "hyprwire", - "nixpkgs": "nixpkgs_4", + "nixpkgs": "nixpkgs_5", "pre-commit-hooks": "pre-commit-hooks_3", "systems": "systems_5", "xdph": "xdph" @@ -1256,7 +1277,7 @@ "hyprlang": "hyprlang_2", "hyprutils": "hyprutils_2", "hyprwayland-scanner": "hyprwayland-scanner_2", - "nixpkgs": "nixpkgs_5", + "nixpkgs": "nixpkgs_6", "systems": "systems_6" }, "locked": { @@ -1566,7 +1587,7 @@ "cachyos-kernel-patches": "cachyos-kernel-patches", "flake-compat": "flake-compat_9", "flake-parts": "flake-parts_2", - "nixpkgs": "nixpkgs_7" + "nixpkgs": "nixpkgs_8" }, "locked": { "lastModified": 1770055712, @@ -1625,7 +1646,7 @@ "nix-gaming": { "inputs": { "flake-parts": "flake-parts_3", - "nixpkgs": "nixpkgs_8" + "nixpkgs": "nixpkgs_9" }, "locked": { "lastModified": 1768062066, @@ -1784,6 +1805,22 @@ } }, "nixpkgs_10": { + "locked": { + "lastModified": 1770115704, + "narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "e6eae2ee2110f3d31110d5c222cd395303343b08", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_11": { "locked": { "lastModified": 1719082008, "narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=", @@ -1832,6 +1869,22 @@ } }, "nixpkgs_4": { + "locked": { + "lastModified": 1758198701, + "narHash": "sha256-7To75JlpekfUmdkUZewnT6MoBANS0XVypW6kjUOXQwc=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0147c2f1d54b30b5dd6d4a8c8542e8d7edf93b5d", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, + "nixpkgs_5": { "locked": { "lastModified": 1769461804, "narHash": "sha256-msG8SU5WsBUfVVa/9RPLaymvi5bI8edTavbIq3vRlhI=", @@ -1847,7 +1900,7 @@ "type": "github" } }, - "nixpkgs_5": { + "nixpkgs_6": { "locked": { "lastModified": 1766070988, "narHash": "sha256-G/WVghka6c4bAzMhTwT2vjLccg/awmHkdKSd2JrycLc=", @@ -1863,7 +1916,7 @@ "type": "github" } }, - "nixpkgs_6": { + "nixpkgs_7": { "locked": { "lastModified": 1759070547, "narHash": "sha256-JVZl8NaVRYb0+381nl7LvPE+A774/dRpif01FKLrYFQ=", @@ -1879,7 +1932,7 @@ "type": "github" } }, - "nixpkgs_7": { + "nixpkgs_8": { "locked": { "lastModified": 1770030960, "narHash": "sha256-b9kW8RiZYQjSYKcFRYwc2vPB08F8xjaTS85tv+lP0YA=", @@ -1895,7 +1948,7 @@ "type": "github" } }, - "nixpkgs_8": { + "nixpkgs_9": { "locked": { "lastModified": 1767364772, "narHash": "sha256-fFUnEYMla8b7UKjijLnMe+oVFOz6HjijGGNS1l7dYaQ=", @@ -1911,22 +1964,6 @@ "type": "github" } }, - "nixpkgs_9": { - "locked": { - "lastModified": 1770115704, - "narHash": "sha256-KHFT9UWOF2yRPlAnSXQJh6uVcgNcWlFqqiAZ7OVlHNc=", - "owner": "nixos", - "repo": "nixpkgs", - "rev": "e6eae2ee2110f3d31110d5c222cd395303343b08", - "type": "github" - }, - "original": { - "owner": "nixos", - "ref": "nixos-unstable", - "repo": "nixpkgs", - "type": "github" - } - }, "nmd": { "flake": false, "locked": { @@ -2118,7 +2155,7 @@ "inputs": { "flake-compat": "flake-compat_8", "gitignore": "gitignore_6", - "nixpkgs": "nixpkgs_6" + "nixpkgs": "nixpkgs_7" }, "locked": { "lastModified": 1760663237, @@ -2137,7 +2174,7 @@ "pyprland": { "inputs": { "flake-compat": "flake-compat_10", - "nixpkgs": "nixpkgs_10", + "nixpkgs": "nixpkgs_11", "pyproject-nix": "pyproject-nix", "systems": "systems_10" }, @@ -2188,6 +2225,7 @@ "git-hooks": "git-hooks", "hb-downloader": "hb-downloader", "home-manager": "home-manager_2", + "hyprWorkspaceLayouts": "hyprWorkspaceLayouts", "hyprland": "hyprland", "hyprlock": "hyprlock", "lanzaboote": "lanzaboote", @@ -2199,7 +2237,7 @@ "nix-gaming": "nix-gaming", "nix-index-database": "nix-index-database", "nix-on-droid": "nix-on-droid", - "nixpkgs": "nixpkgs_9", + "nixpkgs": "nixpkgs_10", "note": "note", "pyprland": "pyprland", "secrets": "secrets", diff --git a/flake.nix b/flake.nix index 51dec49..3ba719b 100644 --- a/flake.nix +++ b/flake.nix @@ -125,6 +125,12 @@ # Pyland for hyprland plugins pyprland.url = "github:hyprland-community/pyprland"; + # Hyprland layout per workspace + hyprWorkspaceLayouts = { + url = "github:zakk4223/hyprWorkspaceLayouts"; + inputs.hyprland.follows = "hyprland"; # to make sure that the plugin is built for the correct version of hyprland + }; + # AAGL aagl.url = "github:ezKEa/aagl-gtk-on-nix"; aagl.inputs.nixpkgs.follows = "nixpkgs"; diff --git a/modules/linux/home-manager/hyprland.nix b/modules/linux/home-manager/hyprland.nix index 59ee4bf..493a48c 100644 --- a/modules/linux/home-manager/hyprland.nix +++ b/modules/linux/home-manager/hyprland.nix @@ -107,6 +107,8 @@ in { systemd.enable = false; # Using USWM globally + plugins = [inputs.hyprWorkspaceLayouts.packages.${pkgs.stdenv.hostPlatform.system}.default]; + settings = { "$mod" = "SUPER"; "$menu" = "tofi"; @@ -123,6 +125,13 @@ in { "hyprctl monitors | grep 'HDMI' && hyprctl keyword monitor 'eDP-1, disable'" ]; + # Setup plugins + plugin = { + wslayout = { + default_layout = "master"; + }; + }; + cursor = { no_break_fs_vrr = 1; no_hardware_cursors = 1; @@ -168,7 +177,7 @@ in { border_size = 1; gaps_in = 3; gaps_out = 6; - layout = "master"; + layout = "workspacelayout"; allow_tearing = true; };