1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
|
# hypr-zoom
`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.
## Why ?
Hyprland cursor zoom factor changes happen instantly, which can feel ood since Hyprland has cool animations. This little CLI solves that.
## Features
- Smoothly animates cursor zoom-factor using a variety of easing and interpolation functions.
- Configurable animation duration and steps.
## Installation
install from aur: [hypr-zoom](https://aur.archlinux.org/packages/hypr-zoom)
Grab from release or :
1. Clone the repository:
```sh
git clone https://github.com/FaqihS/hypr-zoom.git
cd hypr-zoom
```
2. Build the project:
```sh
go build -o hypr-zoom
```
## Usage
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)
- `-force` : Forcing target parameter (default: false)
### Example
```sh
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.
```sh
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.
### Supported Easing Functions
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](https://github.com/fogleman/ease).
### Supported Interpolation function
- Linear
- Log (Logarithmic)
## Showcase
### Default+Linear
```sh
hypr-zoom -interp=Linear
```
https://github.com/user-attachments/assets/261aff62-955f-49e6-9a7b-c5f714389dc4
### InOutCubic
```sh
hypr-zoom -easing=InOutCubic -interp=Linear
```
https://github.com/user-attachments/assets/622d4a4b-b805-495d-8178-ad5e130279c2
### OutBack-Inback
```sh
hypr-zoom -duration=600 -steps=150 -easing=OutBack -easingOut=InBack -interp=Linear
```
https://github.com/user-attachments/assets/de4f2924-b5e8-43a8-9bbf-6f1ac795687c
## Contributing
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
## Acknowledgements
- [fogleman/ease](https://github.com/fogleman/ease) - Easing functions library used in this project.
- [Hyprland](https://hyprland.org)
|