Compare commits

...

2 commits

Author SHA1 Message Date
faukah
b37855a6b2 niri: add custom animations for window opening and resizing
Signed-off-by: faukah <fau@faukah.com>
Change-Id: I6a6a69647336104b507fbba5b82de23684e60291
2025-07-29 22:40:37 +02:00
faukah
e4dc42c2f9 helix: disable custom shell 2025-07-29 22:40:23 +02:00
5 changed files with 75 additions and 15 deletions

View file

@ -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;

View file

@ -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"
])
])

View file

@ -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);
}

View file

@ -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);
}

View file

@ -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;
}