Skip to main content
Mango provides extensive animation options to customize window and tag transition effects.

General Animation Settings

OptionTypeDefaultDescription
animationsinteger1Enable window animations (0=disabled, 1=enabled)
layer_animationsinteger1Enable animations for layer surfaces (0=disabled, 1=enabled)

Animation Types

Window Open Animation

OptionTypeDefaultDescription
animation_type_openstringslideAnimation type when opening windows
animation_fade_ininteger1Enable fade-in during open animation
fadein_begin_opacityfloat0.5Starting opacity for fade-in (0.0-1.0)
Supported types: zoom, slide

Window Close Animation

OptionTypeDefaultDescription
animation_type_closestringslideAnimation type when closing windows
animation_fade_outinteger1Enable fade-out during close animation
fadeout_begin_opacityfloat0.8Starting opacity for fade-out (0.0-1.0)
Supported types: zoom, slide

Zoom Animation Parameters

OptionTypeDefaultDescription
zoom_initial_ratiofloat0.3Initial scale ratio for zoom animation (0.0-1.0)
zoom_end_ratiofloat0.8End scale ratio for zoom animation (0.0-1.0)

Tag Animation

OptionTypeDefaultDescription
tag_animation_directioninteger1Tag switch animation direction (1=horizontal, 0=vertical)

Animation Duration

All duration values are in milliseconds.
OptionTypeDefaultDescription
animation_duration_openinteger400Duration for window open animation (ms)
animation_duration_closeinteger800Duration for window close animation (ms)
animation_duration_moveinteger500Duration for window move animation (ms)
animation_duration_taginteger350Duration for tag switch animation (ms)
animation_duration_focusinteger0Duration for focus change animation (ms)
Setting duration to 0 disables that specific animation transition.

Animation Curves

Animation curves use cubic-bezier format with four values: x1,y1,x2,y2 These control points define the timing function for animations, similar to CSS cubic-bezier.
OptionTypeDefaultDescription
animation_curve_openbezier0.46,1.0,0.29,1Timing curve for open animation
animation_curve_closebezier0.08,0.92,0,1Timing curve for close animation
animation_curve_movebezier0.46,1.0,0.29,1Timing curve for move animation
animation_curve_tagbezier0.46,1.0,0.29,1Timing curve for tag switch
animation_curve_focusbezier0.46,1.0,0.29,1Timing curve for focus change
animation_curve_opafadeinbezier0.46,1.0,0.29,1Timing curve for fade-in opacity
animation_curve_opafadeoutbezier0.5,0.5,0.5,0.5Timing curve for fade-out opacity

Understanding Cubic-Bezier Curves

Cubic-bezier curves are defined by four values: x1, y1, x2, y2
  • x1, y1 - First control point (x1 and y1 should be between 0 and 1)
  • x2, y2 - Second control point (x2 and y2 should be between 0 and 1)
  • Start point is always (0, 0) and end point is always (1, 1)

Common Curve Presets

PresetValuesEffect
Linear0.0,0.0,1.0,1.0Constant speed
Ease0.25,0.1,0.25,1.0Slow start, fast middle, slow end
Ease-in0.42,0.0,1.0,1.0Slow start, fast end
Ease-out0.0,0.0,0.58,1.0Fast start, slow end
Ease-in-out0.42,0.0,0.58,1.0Slow start and end

Per-Layer Animation Override

You can override animation types for specific layer surfaces using layer rules:
layerrule=animation_type_open:zoom,layer_name:rofi
layerrule=animation_type_close:zoom,layer_name:rofi
This is useful for customizing animations for specific applications like launchers, notifications, or overlays.

Examples

Smooth and Slow Animations

animations=1
animation_type_open=slide
animation_type_close=slide
animation_duration_open=600
animation_duration_close=600
animation_curve_open=0.25,0.1,0.25,1.0
animation_curve_close=0.25,0.1,0.25,1.0

Fast and Snappy Animations

animations=1
animation_type_open=zoom
animation_type_close=zoom
animation_duration_open=200
animation_duration_close=200
zoom_initial_ratio=0.8
animation_curve_open=0.0,0.0,0.58,1.0
animation_curve_close=0.42,0.0,1.0,1.0

Disable All Animations

animations=0
layer_animations=0

Fade-Only Animations

animations=1
animation_type_open=slide
animation_type_close=slide
animation_fade_in=1
animation_fade_out=1
fadein_begin_opacity=0.0
fadeout_begin_opacity=1.0
animation_duration_open=300
animation_duration_close=300

Performance Considerations

  • Longer animation durations (>500ms) may feel sluggish on slower hardware
  • Zoom animations can be more GPU-intensive than slide animations
  • Disabling layer_animations can improve performance on systems with many overlay surfaces
  • Setting animation_duration_focus=0 prevents focus animations, which can feel more responsive

See Also

Build docs developers (and LLMs) love