niri: add custom animations for window opening and resizing
Signed-off-by: faukah <fau@faukah.com> Change-Id: I6a6a69647336104b507fbba5b82de23684e60291
This commit is contained in:
parent
e4dc42c2f9
commit
b37855a6b2
4 changed files with 75 additions and 10 deletions
|
@ -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"
|
||||
])
|
||||
])
|
||||
|
|
24
modules/wms/niri/window-close.glsl
Normal file
24
modules/wms/niri/window-close.glsl
Normal 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);
|
||||
}
|
25
modules/wms/niri/window-open.glsl
Normal file
25
modules/wms/niri/window-open.glsl
Normal 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);
|
||||
}
|
5
modules/wms/niri/window-resize.glsl
Normal file
5
modules/wms/niri/window-resize.glsl
Normal 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;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue