From e4dc42c2f9433d843b61ec46287d87676c84c1a8 Mon Sep 17 00:00:00 2001 From: faukah Date: Tue, 29 Jul 2025 21:59:55 +0200 Subject: [PATCH 1/2] helix: disable custom shell --- modules/home/dev/helix.hjem.nix | 5 ----- 1 file changed, 5 deletions(-) diff --git a/modules/home/dev/helix.hjem.nix b/modules/home/dev/helix.hjem.nix index 65e144b..0cfd8b9 100644 --- a/modules/home/dev/helix.hjem.nix +++ b/modules/home/dev/helix.hjem.nix @@ -364,11 +364,6 @@ let completion-timeout = 5; clipboard-provider = "wayland"; - # Shell to use when running external commands. - shell = [ - (getExe pkgs.nushell) - "-c" - ]; completion-trigger-len = 1; completion-replace = true; mouse = true; From b37855a6b2bad78d5bd646c5b13bbd3d51f80918 Mon Sep 17 00:00:00 2001 From: faukah Date: Tue, 29 Jul 2025 22:40:30 +0200 Subject: [PATCH 2/2] niri: add custom animations for window opening and resizing Signed-off-by: faukah Change-Id: I6a6a69647336104b507fbba5b82de23684e60291 --- modules/wms/niri/config.nix | 31 +++++++++++++++++++---------- modules/wms/niri/window-close.glsl | 24 ++++++++++++++++++++++ modules/wms/niri/window-open.glsl | 25 +++++++++++++++++++++++ modules/wms/niri/window-resize.glsl | 5 +++++ 4 files changed, 75 insertions(+), 10 deletions(-) create mode 100644 modules/wms/niri/window-close.glsl create mode 100644 modules/wms/niri/window-open.glsl create mode 100644 modules/wms/niri/window-resize.glsl diff --git a/modules/wms/niri/config.nix b/modules/wms/niri/config.nix index d799b74..04a3183 100644 --- a/modules/wms/niri/config.nix +++ b/modules/wms/niri/config.nix @@ -7,7 +7,7 @@ flag, }: let - inherit (lib.meta) getExe; + inherit (lib.meta) getExe getExe'; inherit (builtins) readFile; in [ @@ -127,11 +127,22 @@ in ]) (plain "animations" [ + (flag "off") (plain "window-close" [ (leaf "duration-ms" 250) (leaf "curve" "linear") (leaf "custom-shader" <| readFile ./window-close.glsl) ]) + (plain "window-open" [ + (leaf "duration-ms" 350) + (leaf "curve" "ease-out-quad") + (leaf "custom-shader" <| readFile ./window-open.glsl) + ]) + # (plain "window-resize" [ + # (leaf "duration-ms" 200) + # (leaf "curve" "ease-out-quad") + # (leaf "custom-shader" <| readFile ./window-resize.glsl) + # ]) ]) (plain "window-rule" [ @@ -152,58 +163,58 @@ in (plain "binds" [ (plain "XF86AudioRaiseVolume" [ (leaf "spawn" [ - "volumectl" + (getExe' pkgs.avizo "volumectl") "-u" "up" ]) ]) (plain "XF86AudioLowerVolume" [ (leaf "spawn" [ - "volumectl" + (getExe' pkgs.avizo "volumectl") "-u" "down" ]) ]) (plain "XF86AudioMute" [ (leaf "spawn" [ - "volumectl" + (getExe' pkgs.avizo "volumectl") "toggle-mute" ]) ]) (plain "XF86AudioMicMute" [ (leaf "spawn" [ - "volumectl" + (getExe' pkgs.avizo "volumectl") "-m" "toggle-mute" ]) ]) (plain "XF86AudioPlay" [ (leaf "spawn" [ - "playerctl" + (getExe' pkgs.avizo "playerctl") "play-pause" ]) ]) (plain "XF86AudioNext" [ (leaf "spawn" [ - "playerctl" + (getExe' pkgs.avizo "playerctl") "next" ]) ]) (plain "XF86AudioPrev" [ (leaf "spawn" [ - "playerctl" + (getExe' pkgs.avizo "playerctl") "previous" ]) ]) (plain "XF86MonBrightnessUp" [ (leaf "spawn" [ - "lightctl" + (getExe' pkgs.avizo "lightctl") "up" ]) ]) (plain "XF86MonBrightnessDown" [ (leaf "spawn" [ - "lightctl" + (getExe' pkgs.avizo "lightctl") "down" ]) ]) diff --git a/modules/wms/niri/window-close.glsl b/modules/wms/niri/window-close.glsl new file mode 100644 index 0000000..e74e02f --- /dev/null +++ b/modules/wms/niri/window-close.glsl @@ -0,0 +1,24 @@ +vec4 fall_and_rotate(vec3 coords_geo, vec3 size_geo) { + float progress = niri_clamped_progress * niri_clamped_progress; + vec2 coords = (coords_geo.xy - vec2(0.5, 1.0)) * size_geo.xy; + + coords.y -= progress * 1440.0; + float random = (niri_random_seed - 0.5) / 2.0; + random = sign(random) - random; + + float max_angle = 0.5 * random; + float angle = progress * max_angle; + mat2 rotate = mat2(cos(angle), -sin(angle), sin(angle), cos(angle)); + + coords = rotate * coords; + coords_geo = vec3(coords / size_geo.xy + vec2(0.5, 1.0), 1.0); + + vec3 coords_tex = niri_geo_to_tex * coords_geo; + vec4 color = texture2D(niri_tex, coords_tex.st); + + return color; +} + +vec4 close_color(vec3 coords_geo, vec3 size_geo) { + return fall_and_rotate(coords_geo, size_geo); +} diff --git a/modules/wms/niri/window-open.glsl b/modules/wms/niri/window-open.glsl new file mode 100644 index 0000000..f5b3818 --- /dev/null +++ b/modules/wms/niri/window-open.glsl @@ -0,0 +1,25 @@ +vec4 expanding_circle(vec3 coords_geo, vec3 size_geo) { + vec3 coords_tex = niri_geo_to_tex * coords_geo; + vec4 color = texture2D(niri_tex, coords_tex.st); + vec2 coords = (coords_geo.xy - vec2(0.5, 0.5)) * size_geo.xy * 2.0; + coords = coords / length(size_geo.xy); + float p = niri_clamped_progress; + if (p * p <= dot(coords, coords)) + color = vec4(0.0); + + return color; +} + +vec4 slider(vec3 coords_geo, vec3 size_geo) { + vec3 coords_tex = niri_geo_to_tex * coords_geo; + vec4 color = texture2D(niri_tex, coords_tex.st); + + if(coords_geo.x >= niri_clamped_progress) { + color = vec4(0.0); + } + return color; +} + +vec4 open_color(vec3 coords_geo, vec3 size_geo) { + return slider(coords_geo, size_geo); +} diff --git a/modules/wms/niri/window-resize.glsl b/modules/wms/niri/window-resize.glsl new file mode 100644 index 0000000..433ab9f --- /dev/null +++ b/modules/wms/niri/window-resize.glsl @@ -0,0 +1,5 @@ +vec4 resize_color(vec3 coords_curr_geo, vec3 size_curr_geo) { + vec3 coords_tex_next = niri_geo_to_tex_next * coords_curr_geo; + vec4 color = texture2D(niri_tex_next, coords_tex_next.st); + return color; +}