mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-03-27 11:51:20 +01:00
feat(wm): add layout_options with ratios support
Added customizable split ratios for layouts via layout_options configuration. Users can now specify column_ratios and row_ratios arrays to control window sizing in various layouts. Ratios are validated at config load time: values are clamped between 0.1 and 0.9 to prevent zero-sized windows, and arrays are automatically truncated when their cumulative sum would reach or exceed 1.0. This ensures there's always remaining space for additional windows. Ratio support varies by layout: - Columns and Rows layouts use the full arrays for each column/row width or height - VerticalStack, RightMainVerticalStack, and HorizontalStack use the first ratio for the primary split and the remaining ratios for stack windows - BSP uses the first value from each array for horizontal and vertical splits respectively - Grid only supports column_ratios since row counts vary dynamically. - UltrawideVerticalStack uses the first two column ratios for center and left columns. All ratio-related values are now defined as constants in default_layout.rs: MAX_RATIOS (5), MIN_RATIO (0.1), MAX_RATIO (0.9), DEFAULT_RATIO (0.5), and DEFAULT_SECONDARY_RATIO (0.25 for UltrawideVerticalStack).
This commit is contained in:
34
schema.json
34
schema.json
@@ -3294,6 +3294,23 @@
|
||||
"description": "Options for specific layouts",
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"column_ratios": {
|
||||
"description": "Column width ratios (up to MAX_RATIOS values between 0.1 and 0.9)\n\n- Used by Columns layout: ratios for each column width\n- Used by Grid layout: ratios for column widths\n- Used by BSP, VerticalStack, RightMainVerticalStack: column_ratios[0] as primary split ratio\n- Used by HorizontalStack: column_ratios[0] as primary split ratio (top area height)\n- Used by UltrawideVerticalStack: column_ratios[0] as center ratio, column_ratios[1] as left ratio\n\nColumns without a ratio share remaining space equally.\nExample: `[0.3, 0.4, 0.3]` for 30%-40%-30% columns",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"default": null,
|
||||
"items": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"format": "float"
|
||||
},
|
||||
"maxItems": 5,
|
||||
"minItems": 5
|
||||
},
|
||||
"grid": {
|
||||
"description": "Options related to the Grid layout",
|
||||
"anyOf": [
|
||||
@@ -3305,6 +3322,23 @@
|
||||
}
|
||||
]
|
||||
},
|
||||
"row_ratios": {
|
||||
"description": "Row height ratios (up to MAX_RATIOS values between 0.1 and 0.9)\n\n- Used by Rows layout: ratios for each row height\n- Used by Grid layout: ratios for row heights\n\nRows without a ratio share remaining space equally.\nExample: `[0.5, 0.5]` for 50%-50% rows",
|
||||
"type": [
|
||||
"array",
|
||||
"null"
|
||||
],
|
||||
"default": null,
|
||||
"items": {
|
||||
"type": [
|
||||
"number",
|
||||
"null"
|
||||
],
|
||||
"format": "float"
|
||||
},
|
||||
"maxItems": 5,
|
||||
"minItems": 5
|
||||
},
|
||||
"scrolling": {
|
||||
"description": "Options related to the Scrolling layout",
|
||||
"anyOf": [
|
||||
|
||||
Reference in New Issue
Block a user