arch-hyprland/docs/Animations.md
2025-11-24 05:20:52 -07:00

4.0 KiB
Raw Blame History

Animations

General

Animations are declared with the animation keyword.

animation = NAME, ONOFF, SPEED, CURVE [,STYLE]

ONOFF use 0 to disable, 1 to enable. Note: if its 0, you can omit further args.

SPEED is the amount of ds (1ds = 100ms) the animation will take.

CURVE is the bezier curve name, see curves.

STYLE (optional) is the animation style.

The animations are a tree. If an animation is unset, it will inherit its parents values. See the animation tree.

Examples

animation = workspaces, 1, 8, default
animation = windows, 1, 10, myepiccurve, slide
animation = fade, 0

Animation tree

global
  ↳ windows - styles: slide, popin, gnomed
    ↳ windowsIn - window open - styles: same as windows
    ↳ windowsOut - window close - styles: same as windows
    ↳ windowsMove - everything in between, moving, dragging, resizing.
  ↳ layers - styles: slide, popin, fade
    ↳ layersIn - layer open
    ↳ layersOut - layer close
  ↳ fade
    ↳ fadeIn - fade in for window open
    ↳ fadeOut - fade out for window close
    ↳ fadeSwitch - fade on changing activewindow and its opacity
    ↳ fadeShadow - fade on changing activewindow for shadows
    ↳ fadeDim - the easing of the dimming of inactive windows
    ↳ fadeLayers - for controlling fade on layers
      ↳ fadeLayersIn - fade in for layer open
      ↳ fadeLayersOut - fade out for layer close
    ↳ fadePopups - for controlling fade on wayland popups
      ↳ fadePopupsIn - fade in for wayland popup open
      ↳ fadePopupsOut - fade out for wayland popup close
    ↳ fadeDpms - for controlling fade when dpms is toggled
  ↳ border - for animating the border's color switch speed
  ↳ borderangle - for animating the border's gradient angle - styles: once (default), loop
  ↳ workspaces - styles: slide, slidevert, fade, slidefade, slidefadevert
    ↳ workspacesIn - styles: same as workspaces
    ↳ workspacesOut - styles: same as workspaces
    ↳ specialWorkspace - styles: same as workspaces
      ↳ specialWorkspaceIn - styles: same as workspaces
      ↳ specialWorkspaceOut - styles: same as workspaces
  ↳ zoomFactor - animates the screen zoom
  ↳ monitorAdded - monitor added zoom animation

⚠️

Using the loop style for borderangle requires Hyprland to constantly render new frames at a frequency equal to your screens refresh rate (e.g. 60 times per second for a 60hz monitor), which might stress your CPU/GPU and will impact battery life.
This will apply even if animations are disabled or borders are not visible.

Curves

Defining your own Bézier curve can be done with the bezier keyword:

bezier = NAME, X0, Y0, X1, Y1

where NAME is a name of your choice and X0, Y0, X1, Y1 are the the two control points for a Cubic Bézier curve.
A good website to design your own Bézier can be cssportal.com.
If you want to instead choose from a list of pre-made Béziers, you can check out easings.net.

Example

bezier = overshoot, 0.05, 0.9, 0.1, 1.1

Extras

For animation style popin in windows, you can specify a minimum percentage to start from. For example, the following will make the animation 80% -> 100% of the size:

animation = windows, 1, 8, default, popin 80%

For animation styles slide, slidevert, slidefade and slidefadevert in workspaces, you can specify a movement percentage. For example, the following will make windows move 20% of the screen width:

animation = workspaces, 1, 8, default, slidefade 20%

For animation style slide in windows and layers you can specify a forced side.
You can choose between top, bottom, left or right.

animation = windows, 1, 8, default, slide left