hypr-zoom
is a command-line tool written in Go that smoothly animates the Hyprland cursor zoom-factor changes using variety of easing functions.
It simply uses the hyprctl
command to adjust the cursor zoom-factor and the ease library for animation interpolation.
Hyprland cursor zoom factor changes happen instantly, which can feel ood since Hyprland has cool animations. This little CLI solves that.
- Smoothly animates cursor zoom-factor using a variety of easing and interpolation functions.
- Configurable animation duration and steps.
install from aur: hypr-zoom
Grab from release or :
-
Clone the repository:
git clone https://github.com/FaqihS/hypr-zoom.git cd hypr-zoom
-
Build the project:
go build -o hypr-zoom
The hypr-zoom
command has several flags to configure the animation:
-duration
: Duration of the animation in milliseconds (default: 500)-steps
: Number of steps in the animation (default: 100)-easing
: Easing function to use for the animation (default: InOutExpo)-easingOut
: Easing function to use for the zoom-out animation (optional)-target
: Target zoom factor (default: 2.0)-interp
: Interpolation Function used for animation(default: Log)
hypr-zoom -easing=InOutExpo -duration=500 -steps=60 -target=1.2
This command will animate the zoom factor to 1.2 using the InOutExpo easing function over 500 milliseconds with 60 steps.
hypr-zoom -easing=OutBack -easingOut=OutExpo
This command will animate the zoom factor using the OutBack easing function when zooming-in and OutExpo when zooming-out.
Warning
Adjust duration and steps wisely.
The following easing functions are supported:
- Linear
- InQuad, OutQuad, InOutQuad
- InCubic, OutCubic, InOutCubic
- InQuart, OutQuart, InOutQuart
- InQuint, OutQuint, InOutQuint
- InSine, OutSine, InOutSine
- InExpo, OutExpo, InOutExpo
- InCirc, OutCirc, InOutCirc
- InBack, OutBack, InOutBack
- InBounce, OutBounce, InOutBounce
- InSquare, OutSquare, InOutSquare
For animation preview see here.
- Linear
- Log (Logarithmic)
hypr-zoom -interp=Linear
1.mp4
hypr-zoom -easing=InOutCubic -interp=Linear
2.mp4
hypr-zoom -duration=600 -steps=150 -easing=OutBack -easingOut=InBack -interp=Linear
3.mp4
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes. Although i'm not real Go Dev :p
- fogleman/ease - Easing functions library used in this project.
- Hyprland