diff --git a/toml-spec/spec/spec.generated.json b/toml-spec/spec/spec.generated.json
index 930ad697..b7b5ce2d 100644
--- a/toml-spec/spec/spec.generated.json
+++ b/toml-spec/spec/spec.generated.json
@@ -641,6 +641,49 @@
}
]
},
+ "AnimationCurve": {
+ "description": "Describes a window animation curve.\n",
+ "anyOf": [
+ {
+ "type": "string",
+ "description": "One of the supported curve presets.\n",
+ "enum": [
+ "linear",
+ "ease",
+ "ease-in",
+ "ease-out",
+ "ease-in-out"
+ ]
+ },
+ {
+ "type": "array",
+ "description": "A custom CSS-style cubic-bezier curve as four numbers:\n`x1`, `y1`, `x2`, and `y2`.\n\nThe implicit endpoints are `(0, 0)` and `(1, 1)`. `x1` and `x2` must\nbe between `0` and `1`.\n",
+ "items": {
+ "type": "number",
+ "description": ""
+ }
+ }
+ ]
+ },
+ "Animations": {
+ "description": "Describes window animation settings.\n\n- Example:\n\n ```toml\n [animations]\n enabled = true\n duration-ms = 160\n curve = [0.25, 0.1, 0.25, 1.0]\n ```\n",
+ "type": "object",
+ "properties": {
+ "enabled": {
+ "type": "boolean",
+ "description": "Enables or disables window animations.\n\nThe default is `false`.\n"
+ },
+ "duration-ms": {
+ "type": "integer",
+ "description": "Sets the animation duration in milliseconds.\n\nThe default is `160`.\n"
+ },
+ "curve": {
+ "description": "Sets the animation curve.\n\nThe default is `ease-out`.\n",
+ "$ref": "#/$defs/AnimationCurve"
+ }
+ },
+ "required": []
+ },
"BarPosition": {
"type": "string",
"description": "The position of the bar.",
@@ -1085,6 +1128,10 @@
"description": "Configures the ui-drag settings.\n\n- Example:\n\n ```toml\n ui-drag = { enabled = false, threshold = 20 }\n ```\n",
"$ref": "#/$defs/UiDrag"
},
+ "animations": {
+ "description": "Configures window animations.\n\nAnimations are disabled by default.\n\n- Example:\n\n ```toml\n [animations]\n enabled = true\n duration-ms = 160\n curve = \"ease-out\"\n ```\n",
+ "$ref": "#/$defs/Animations"
+ },
"xwayland": {
"description": "Configures the Xwayland settings.\n\n- Example:\n\n ```toml\n xwayland = { scaling-mode = \"downscaled\" }\n ```\n",
"$ref": "#/$defs/Xwayland"
diff --git a/toml-spec/spec/spec.generated.md b/toml-spec/spec/spec.generated.md
index 43e9f20d..a1c4ff29 100644
--- a/toml-spec/spec/spec.generated.md
+++ b/toml-spec/spec/spec.generated.md
@@ -942,6 +942,96 @@ This table is a tagged union. The variant is determined by the `type` field. It
The numbers should be integers.
+
+### `AnimationCurve`
+
+Describes a window animation curve.
+
+Values of this type should have one of the following forms:
+
+#### A string
+
+One of the supported curve presets.
+
+The string should have one of the following values:
+
+- `linear`:
+
+ No easing.
+
+- `ease`:
+
+ The CSS `ease` curve.
+
+- `ease-in`:
+
+ The CSS `ease-in` curve.
+
+- `ease-out`:
+
+ The CSS `ease-out` curve.
+
+- `ease-in-out`:
+
+ The CSS `ease-in-out` curve.
+
+
+#### An array
+
+A custom CSS-style cubic-bezier curve as four numbers:
+`x1`, `y1`, `x2`, and `y2`.
+
+The implicit endpoints are `(0, 0)` and `(1, 1)`. `x1` and `x2` must
+be between `0` and `1`.
+
+Each element of this array should be a number.
+
+
+
+### `Animations`
+
+Describes window animation settings.
+
+- Example:
+
+ ```toml
+ [animations]
+ enabled = true
+ duration-ms = 160
+ curve = [0.25, 0.1, 0.25, 1.0]
+ ```
+
+Values of this type should be tables.
+
+The table has the following fields:
+
+- `enabled` (optional):
+
+ Enables or disables window animations.
+
+ The default is `false`.
+
+ The value of this field should be a boolean.
+
+- `duration-ms` (optional):
+
+ Sets the animation duration in milliseconds.
+
+ The default is `160`.
+
+ The value of this field should be a number.
+
+ The numbers should be integers.
+
+- `curve` (optional):
+
+ Sets the animation curve.
+
+ The default is `ease-out`.
+
+ The value of this field should be a [AnimationCurve](#types-AnimationCurve).
+
+
### `BarPosition`
@@ -2169,6 +2259,23 @@ The table has the following fields:
The value of this field should be a [UiDrag](#types-UiDrag).
+- `animations` (optional):
+
+ Configures window animations.
+
+ Animations are disabled by default.
+
+ - Example:
+
+ ```toml
+ [animations]
+ enabled = true
+ duration-ms = 160
+ curve = "ease-out"
+ ```
+
+ The value of this field should be a [Animations](#types-Animations).
+
- `xwayland` (optional):
Configures the Xwayland settings.
@@ -5670,4 +5777,3 @@ The table has the following fields:
The value of this field should be a [XScalingMode](#types-XScalingMode).
-
diff --git a/toml-spec/spec/spec.yaml b/toml-spec/spec/spec.yaml
index aa6789da..7d2abfb7 100644
--- a/toml-spec/spec/spec.yaml
+++ b/toml-spec/spec/spec.yaml
@@ -2942,6 +2942,22 @@ Config:
```toml
ui-drag = { enabled = false, threshold = 20 }
```
+ animations:
+ ref: Animations
+ required: false
+ description: |
+ Configures window animations.
+
+ Animations are disabled by default.
+
+ - Example:
+
+ ```toml
+ [animations]
+ enabled = true
+ duration-ms = 160
+ curve = "ease-out"
+ ```
xwayland:
ref: Xwayland
required: false
@@ -3655,6 +3671,74 @@ UiDrag:
The default is `10`.
+Animations:
+ kind: table
+ description: |
+ Describes window animation settings.
+
+ - Example:
+
+ ```toml
+ [animations]
+ enabled = true
+ duration-ms = 160
+ curve = [0.25, 0.1, 0.25, 1.0]
+ ```
+ fields:
+ enabled:
+ kind: boolean
+ required: false
+ description: |
+ Enables or disables window animations.
+
+ The default is `false`.
+ duration-ms:
+ kind: number
+ integer_only: true
+ required: false
+ description: |
+ Sets the animation duration in milliseconds.
+
+ The default is `160`.
+ curve:
+ ref: AnimationCurve
+ required: false
+ description: |
+ Sets the animation curve.
+
+ The default is `ease-out`.
+
+
+AnimationCurve:
+ kind: variable
+ description: |
+ Describes a window animation curve.
+ variants:
+ - kind: string
+ description: |
+ One of the supported curve presets.
+ values:
+ - value: linear
+ description: No easing.
+ - value: ease
+ description: The CSS `ease` curve.
+ - value: ease-in
+ description: The CSS `ease-in` curve.
+ - value: ease-out
+ description: The CSS `ease-out` curve.
+ - value: ease-in-out
+ description: The CSS `ease-in-out` curve.
+ - kind: array
+ items:
+ kind: number
+ description: |
+ A custom CSS-style cubic-bezier curve as four numbers:
+ `x1`, `y1`, `x2`, and `y2`.
+
+ The implicit endpoints are `(0, 0)` and `(1, 1)`. `x1` and `x2` must
+ be between `0` and `1`.
+
+
Xwayland:
kind: table
description: |