From b3f8b1e62826e9cff79f0e995ef8a173c0699bec Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 22 Feb 2026 05:35:26 +0000 Subject: [PATCH 1/5] feat(hyprshell): add hyprshell window switcher with Super+Tab Install hyprshell from flake input and configure the switch mode with Super as the modifier key, replacing the previous hyprexpo binding on Super+Tab. Hold Super and press Tab/Shift+Tab to cycle through windows sorted by recent access. https://claude.ai/code/session_018dkHdESaqmYHpJRvuk6Lts --- config/default.nix | 1 + config/hyprland/default.nix | 2 ++ config/hyprland/hyprland.conf | 2 +- config/hyprshell/default.nix | 17 +++++++++++++++++ flake.nix | 3 +++ home-manager/default.nix | 1 + 6 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 config/hyprshell/default.nix diff --git a/config/default.nix b/config/default.nix index 7d415b27e..56a495b1a 100644 --- a/config/default.nix +++ b/config/default.nix @@ -36,6 +36,7 @@ in ./gtk ./hyprland ./hyprpanel + ./hyprshell ./rofi ] else diff --git a/config/hyprland/default.nix b/config/hyprland/default.nix index 26e229ec3..0e6fe7269 100644 --- a/config/hyprland/default.nix +++ b/config/hyprland/default.nix @@ -6,6 +6,7 @@ }: let hyprexpoPlugin = pkgs.hyprlandPlugins.hyprexpo; + hyprshellPkg = inputs.hyprshell.packages.${pkgs.system}.hyprshell-nixpkgs; in { wayland.windowManager.hyprland = { @@ -15,6 +16,7 @@ in extraConfig = '' plugin = ${hyprexpoPlugin}/lib/libhyprexpo.so exec-once = ${pkgs.hyprpanel}/bin/hyprpanel + exec-once = ${hyprshellPkg}/bin/hyprshell run & '' + builtins.readFile ./hyprland.conf; }; diff --git a/config/hyprland/hyprland.conf b/config/hyprland/hyprland.conf index da0efddda..a0a44cb6a 100644 --- a/config/hyprland/hyprland.conf +++ b/config/hyprland/hyprland.conf @@ -258,7 +258,7 @@ bind = $mod SHIFT, F, togglefloating, bind = CTRL ALT SHIFT SUPER, F, exec, hyprctl --batch "dispatch movetoworkspace empty; dispatch fullscreen 0" bind = SUPER CTRL, F, fullscreen, 1 bind = $mod SHIFT, Q, exec, hyprpanel toggleWindow power-menu -bind = $mod, TAB, hyprexpo:expo, toggle +# hyprshell handles Super+Tab / Super+Shift+Tab window switching # Focus (vim keys) bind = $mod, H, movefocus, l diff --git a/config/hyprshell/default.nix b/config/hyprshell/default.nix new file mode 100644 index 000000000..e818d301a --- /dev/null +++ b/config/hyprshell/default.nix @@ -0,0 +1,17 @@ +{ inputs, pkgs, ... }: +{ + programs.hyprshell = { + enable = true; + package = inputs.hyprshell.packages.${pkgs.system}.hyprshell-nixpkgs; + systemd.enable = false; + settings = { + windows = { + enable = true; + switch = { + enable = true; + modifier = "super"; + }; + }; + }; + }; +} diff --git a/flake.nix b/flake.nix index 53fc836cb..be3b71e25 100644 --- a/flake.nix +++ b/flake.nix @@ -64,6 +64,9 @@ url = "github:xremap/nix-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; + hyprshell = { + url = "github:H3rmt/hyprshell?ref=hyprshell-release"; + }; }; outputs = diff --git a/home-manager/default.nix b/home-manager/default.nix index 6f207375b..661f9eb0f 100644 --- a/home-manager/default.nix +++ b/home-manager/default.nix @@ -29,6 +29,7 @@ in ++ [ inputs.agenix.homeManagerModules.default inputs.xremap.homeManagerModules.default + inputs.hyprshell.homeModules.hyprshell ]; home.username = username; From 1cd36665bf94a05b5c91efae0ac99a8e23d330e8 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 22 Feb 2026 05:49:32 +0000 Subject: [PATCH 2/5] Revert "feat(hyprshell): add hyprshell window switcher with Super+Tab" This reverts commit b3f8b1e62826e9cff79f0e995ef8a173c0699bec. --- config/default.nix | 1 - config/hyprland/default.nix | 2 -- config/hyprland/hyprland.conf | 2 +- config/hyprshell/default.nix | 17 ----------------- flake.nix | 3 --- home-manager/default.nix | 1 - 6 files changed, 1 insertion(+), 25 deletions(-) delete mode 100644 config/hyprshell/default.nix diff --git a/config/default.nix b/config/default.nix index 56a495b1a..7d415b27e 100644 --- a/config/default.nix +++ b/config/default.nix @@ -36,7 +36,6 @@ in ./gtk ./hyprland ./hyprpanel - ./hyprshell ./rofi ] else diff --git a/config/hyprland/default.nix b/config/hyprland/default.nix index 0e6fe7269..26e229ec3 100644 --- a/config/hyprland/default.nix +++ b/config/hyprland/default.nix @@ -6,7 +6,6 @@ }: let hyprexpoPlugin = pkgs.hyprlandPlugins.hyprexpo; - hyprshellPkg = inputs.hyprshell.packages.${pkgs.system}.hyprshell-nixpkgs; in { wayland.windowManager.hyprland = { @@ -16,7 +15,6 @@ in extraConfig = '' plugin = ${hyprexpoPlugin}/lib/libhyprexpo.so exec-once = ${pkgs.hyprpanel}/bin/hyprpanel - exec-once = ${hyprshellPkg}/bin/hyprshell run & '' + builtins.readFile ./hyprland.conf; }; diff --git a/config/hyprland/hyprland.conf b/config/hyprland/hyprland.conf index a0a44cb6a..da0efddda 100644 --- a/config/hyprland/hyprland.conf +++ b/config/hyprland/hyprland.conf @@ -258,7 +258,7 @@ bind = $mod SHIFT, F, togglefloating, bind = CTRL ALT SHIFT SUPER, F, exec, hyprctl --batch "dispatch movetoworkspace empty; dispatch fullscreen 0" bind = SUPER CTRL, F, fullscreen, 1 bind = $mod SHIFT, Q, exec, hyprpanel toggleWindow power-menu -# hyprshell handles Super+Tab / Super+Shift+Tab window switching +bind = $mod, TAB, hyprexpo:expo, toggle # Focus (vim keys) bind = $mod, H, movefocus, l diff --git a/config/hyprshell/default.nix b/config/hyprshell/default.nix deleted file mode 100644 index e818d301a..000000000 --- a/config/hyprshell/default.nix +++ /dev/null @@ -1,17 +0,0 @@ -{ inputs, pkgs, ... }: -{ - programs.hyprshell = { - enable = true; - package = inputs.hyprshell.packages.${pkgs.system}.hyprshell-nixpkgs; - systemd.enable = false; - settings = { - windows = { - enable = true; - switch = { - enable = true; - modifier = "super"; - }; - }; - }; - }; -} diff --git a/flake.nix b/flake.nix index be3b71e25..53fc836cb 100644 --- a/flake.nix +++ b/flake.nix @@ -64,9 +64,6 @@ url = "github:xremap/nix-flake"; inputs.nixpkgs.follows = "nixpkgs"; }; - hyprshell = { - url = "github:H3rmt/hyprshell?ref=hyprshell-release"; - }; }; outputs = diff --git a/home-manager/default.nix b/home-manager/default.nix index 661f9eb0f..6f207375b 100644 --- a/home-manager/default.nix +++ b/home-manager/default.nix @@ -29,7 +29,6 @@ in ++ [ inputs.agenix.homeManagerModules.default inputs.xremap.homeManagerModules.default - inputs.hyprshell.homeModules.hyprshell ]; home.username = username; From b7740cfaefd434d6683d2d8b62d3bc48f192cd4c Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 22 Feb 2026 05:49:57 +0000 Subject: [PATCH 3/5] feat(packages): add hyprshell to Linux desktop packages https://claude.ai/code/session_018dkHdESaqmYHpJRvuk6Lts --- home-manager/packages/default.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/home-manager/packages/default.nix b/home-manager/packages/default.nix index 2e3905dbd..cef941378 100644 --- a/home-manager/packages/default.nix +++ b/home-manager/packages/default.nix @@ -135,6 +135,7 @@ with pkgs; hypridle hyprlock hyprpicker + hyprshell hyprshot hyprsunset libnotify From 9af2cdc5ca7c22e00551c7c72a136da9ded45dcc Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 22 Feb 2026 05:52:37 +0000 Subject: [PATCH 4/5] feat(hyprshell): add exec-once and update Super+Tab binding - Start hyprshell daemon via exec-once in hyprland config - Replace hyprexpo Super+Tab binding with hyprshell window switching https://claude.ai/code/session_018dkHdESaqmYHpJRvuk6Lts --- config/hyprland/default.nix | 1 + config/hyprland/hyprland.conf | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/config/hyprland/default.nix b/config/hyprland/default.nix index 26e229ec3..f0139d28a 100644 --- a/config/hyprland/default.nix +++ b/config/hyprland/default.nix @@ -15,6 +15,7 @@ in extraConfig = '' plugin = ${hyprexpoPlugin}/lib/libhyprexpo.so exec-once = ${pkgs.hyprpanel}/bin/hyprpanel + exec-once = ${pkgs.hyprshell}/bin/hyprshell run & '' + builtins.readFile ./hyprland.conf; }; diff --git a/config/hyprland/hyprland.conf b/config/hyprland/hyprland.conf index da0efddda..a0a44cb6a 100644 --- a/config/hyprland/hyprland.conf +++ b/config/hyprland/hyprland.conf @@ -258,7 +258,7 @@ bind = $mod SHIFT, F, togglefloating, bind = CTRL ALT SHIFT SUPER, F, exec, hyprctl --batch "dispatch movetoworkspace empty; dispatch fullscreen 0" bind = SUPER CTRL, F, fullscreen, 1 bind = $mod SHIFT, Q, exec, hyprpanel toggleWindow power-menu -bind = $mod, TAB, hyprexpo:expo, toggle +# hyprshell handles Super+Tab / Super+Shift+Tab window switching # Focus (vim keys) bind = $mod, H, movefocus, l From f139a4aa8fa532870547eaa3d1d3af6b34aa08af Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 22 Feb 2026 05:57:44 +0000 Subject: [PATCH 5/5] feat(hyprshell): add hyprshell config module with Super+Tab switching - Create config/hyprshell with config.toml for window switch mode - Import hyprshell module in desktop config - Configure Super modifier for window switching https://claude.ai/code/session_018dkHdESaqmYHpJRvuk6Lts --- config/default.nix | 1 + config/hyprshell/config.toml | 7 +++++++ config/hyprshell/default.nix | 7 +++++++ 3 files changed, 15 insertions(+) create mode 100644 config/hyprshell/config.toml create mode 100644 config/hyprshell/default.nix diff --git a/config/default.nix b/config/default.nix index 7d415b27e..56a495b1a 100644 --- a/config/default.nix +++ b/config/default.nix @@ -36,6 +36,7 @@ in ./gtk ./hyprland ./hyprpanel + ./hyprshell ./rofi ] else diff --git a/config/hyprshell/config.toml b/config/hyprshell/config.toml new file mode 100644 index 000000000..ebf7c66f7 --- /dev/null +++ b/config/hyprshell/config.toml @@ -0,0 +1,7 @@ +version = 1 + +[windows] +scale = 8.0 + +[windows.switch] +modifier = "super" diff --git a/config/hyprshell/default.nix b/config/hyprshell/default.nix new file mode 100644 index 000000000..f145e6494 --- /dev/null +++ b/config/hyprshell/default.nix @@ -0,0 +1,7 @@ +{ pkgs, ... }: +{ + xdg.configFile."hyprshell/config.toml" = { + source = ./config.toml; + force = true; + }; +}