summaryrefslogtreecommitdiff
path: root/hypr/dynamic-cursor.conf
diff options
context:
space:
mode:
Diffstat (limited to 'hypr/dynamic-cursor.conf')
-rw-r--r--hypr/dynamic-cursor.conf139
1 files changed, 139 insertions, 0 deletions
diff --git a/hypr/dynamic-cursor.conf b/hypr/dynamic-cursor.conf
new file mode 100644
index 0000000..f343737
--- /dev/null
+++ b/hypr/dynamic-cursor.conf
@@ -0,0 +1,139 @@
+plugin:dynamic-cursors {
+
+ # enables the plugin
+ enabled = true
+
+ # sets the cursor behaviour, supports these values:
+ # tilt - tilt the cursor based on x-velocity
+ # rotate - rotate the cursor based on movement direction
+ # stretch - stretch the cursor shape based on direction and velocity
+ # none - do not change the cursors behaviour
+ mode = stretch
+
+ # minimum angle difference in degrees after which the shape is changed
+ # smaller values are smoother, but more expensive for hw cursors
+ threshold = 2
+
+ # override the mode behaviour per shape
+ # this is a keyword and can be repeated many times
+ # by default, there are no rules added
+ # see the dedicated `shape rules` section below!
+ #shaperule = <shape-name>, <mode> (optional), <property>: <value>, ...
+ # shaperule = <shape-name>, <mode> (optional), <property>: <value>, ...
+
+ # for mode = rotate
+ rotate {
+
+ # length in px of the simulated stick used to rotate the cursor
+ # most realistic if this is your actual cursor size
+ length = 20
+
+ # clockwise offset applied to the angle in degrees
+ # this will apply to ALL shapes
+ offset = 0.0
+ }
+
+ # for mode = tilt
+ tilt {
+
+ # controls how powerful the tilt is, the lower, the more power
+ # this value controls at which speed (px/s) the full tilt is reached
+ limit = 5000
+
+ # relationship between speed and tilt, supports these values:
+ # linear - a linear function is used
+ # quadratic - a quadratic function is used (most realistic to actual air drag)
+ # negative_quadratic - negative version of the quadratic one, feels more aggressive
+ # see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
+ function = quadratic
+
+ # time window (ms) over which the speed is calculated
+ # higher values will make slow motions smoother but more delayed
+ window = 100
+
+ # full tilt for each side (°)
+ full_tilt = 60
+ }
+
+ # for mode = stretch
+ stretch {
+
+ # controls how much the cursor is stretched
+ # this value controls at which speed (px/s) the full stretch is reached
+ # the full stretch being twice the original length
+ limit = 4000
+
+ # relationship between speed and stretch amount, supports these values:
+ # linear - a linear function is used
+ # quadratic - a quadratic function is used
+ # negative_quadratic - negative version of the quadratic one, feels more aggressive
+ # see `activation` in `src/mode/utils.cpp` for how exactly the calculation is done
+ function = negative_quadratic
+
+ # time window (ms) over which the speed is calculated
+ # higher values will make slow motions smoother but more delayed
+ window = 100
+ }
+
+ # configure shake to find
+ # magnifies the cursor if its is being shaken
+ shake {
+
+ # enables shake to find
+ enabled = true
+
+ # use nearest-neighbour (pixelated) scaling when shaking
+ # may look weird when effects are enabled
+ nearest = true
+
+ # controls how soon a shake is detected
+ # lower values mean sooner
+ threshold = 6.0
+
+ # magnification level immediately after shake start
+ base = 4.0
+ # magnification increase per second when continuing to shake
+ speed = 4.0
+ # how much the speed is influenced by the current shake intensitiy
+ influence = 0.0
+
+ # maximal magnification the cursor can reach
+ # values below 1 disable the limit (e.g. 0)
+ limit = 0.0
+
+ # time in millseconds the cursor will stay magnified after a shake has ended
+ timeout = 2000
+
+ # show cursor behaviour `tilt`, `rotate`, etc. while shaking
+ effects = false
+
+ # enable ipc events for shake
+ # see the `ipc` section below
+ ipc = false
+ }
+
+ # use hyprcursor to get a higher resolution texture when the cursor is magnified
+ # see the `hyprcursor` section below
+ hyprcursor {
+
+ # use nearest-neighbour (pixelated) scaling when magnifing beyond texture size
+ # this will also have effect without hyprcursor support being enabled
+ # 0 / false - never use pixelated scaling
+ # 1 / true - use pixelated when no highres image
+ # 2 - always use pixleated scaling
+ nearest = true
+
+ # enable dedicated hyprcursor support
+ enabled = true
+
+ # resolution in pixels to load the magnified shapes at
+ # be warned that loading a very high-resolution image will take a long time and might impact memory consumption
+ # -1 means we use [normal cursor size] * [shake:base option]
+ resolution = -1
+
+ # shape to use when clientside cursors are being magnified
+ # see the shape-name property of shape rules for possible names
+ # specifying clientside will use the actual shape, but will be pixelated
+ fallback = clientside
+ }
+}