Files
komorebi/schema.json
LGUG2Z a42e809ade docs(config): encode defaults of unwrapped options into schema
This commit ensures that the various default values that the different
Option<T> config properties can be unwrapped to are encoded by schemars
so that they can be picked up by docgen.
2025-12-26 18:16:55 -08:00

2648 lines
64 KiB
JSON

{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "StaticConfig",
"description": "The `komorebi.json` static configuration file reference for `v0.1.40`",
"type": "object",
"properties": {
"animation": {
"description": "Animations configuration options",
"anyOf": [
{
"$ref": "#/$defs/AnimationsConfig"
},
{
"type": "null"
}
]
},
"app_specific_configuration_path": {
"description": "Path to applications.json from komorebi-application-specific-configurations",
"anyOf": [
{
"$ref": "#/$defs/AppSpecificConfigurationPath"
},
{
"type": "null"
}
]
},
"bar_configurations": {
"description": "Komorebi status bar configuration files for multiple instances on different monitors",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/PathBuf"
}
},
"border": {
"description": "Display window borders",
"type": [
"boolean",
"null"
],
"default": true
},
"border_colours": {
"description": "Window border colours for different container types (has no effect if a theme is defined)",
"anyOf": [
{
"$ref": "#/$defs/BorderColours"
},
{
"type": "null"
}
]
},
"border_implementation": {
"description": "Window border implementation",
"anyOf": [
{
"$ref": "#/$defs/BorderImplementation"
},
{
"type": "null"
}
],
"default": "Komorebi"
},
"border_offset": {
"description": "Offset of window borders",
"type": [
"integer",
"null"
],
"format": "int32",
"default": -1
},
"border_overflow_applications": {
"description": "Identify border overflow applications",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"border_style": {
"description": "Window border style",
"anyOf": [
{
"$ref": "#/$defs/BorderStyle"
},
{
"type": "null"
}
],
"default": "System"
},
"border_width": {
"description": "Width of window borders",
"type": [
"integer",
"null"
],
"format": "int32",
"default": 8
},
"border_z_order": {
"description": "DEPRECATED from v0.1.31: no longer required",
"anyOf": [
{
"$ref": "#/$defs/ZOrder"
},
{
"type": "null"
}
],
"deprecated": true
},
"cross_boundary_behaviour": {
"description": "Determine what happens when an action is called on a window at a monitor boundary",
"anyOf": [
{
"$ref": "#/$defs/CrossBoundaryBehaviour"
},
{
"type": "null"
}
],
"default": "Monitor"
},
"cross_monitor_move_behaviour": {
"description": "Determine what happens when a window is moved across a monitor boundary",
"anyOf": [
{
"$ref": "#/$defs/MoveBehaviour"
},
{
"type": "null"
}
],
"default": "Swap"
},
"default_container_padding": {
"description": "Global default container padding",
"type": [
"integer",
"null"
],
"format": "int32",
"default": 10
},
"default_workspace_padding": {
"description": "Global default workspace padding",
"type": [
"integer",
"null"
],
"format": "int32",
"default": 10
},
"display_index_preferences": {
"description": "Set display index preferences",
"type": [
"object",
"null"
],
"additionalProperties": false,
"patternProperties": {
"^\\d+$": {
"type": "string"
}
}
},
"float_override": {
"description": "Enable or disable float override, which makes it so every new window opens in floating mode",
"type": [
"boolean",
"null"
],
"default": false
},
"float_override_placement": {
"description": "Determines the `Placement` to be used when spawning a window with float override active",
"anyOf": [
{
"$ref": "#/$defs/Placement"
},
{
"type": "null"
}
]
},
"float_rule_placement": {
"description": "Determines the `Placement` to be used when spawning a window that matches a\n`floating_applications` rule",
"anyOf": [
{
"$ref": "#/$defs/Placement"
},
{
"type": "null"
}
]
},
"floating_applications": {
"description": "Identify applications which should be managed as floating windows",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"floating_layer_behaviour": {
"description": "Determines what happens on a new window when on the `FloatingLayer`",
"anyOf": [
{
"$ref": "#/$defs/FloatingLayerBehaviour"
},
{
"type": "null"
}
],
"default": "Tile"
},
"floating_layer_placement": {
"description": "Determines the `Placement` to be used when spawning a window on the floating layer with the\n`FloatingLayerBehaviour` set to `FloatingLayerBehaviour::Float`",
"anyOf": [
{
"$ref": "#/$defs/Placement"
},
{
"type": "null"
}
],
"default": "Center"
},
"floating_window_aspect_ratio": {
"description": "Aspect ratio to resize with when toggling floating mode for a window",
"anyOf": [
{
"$ref": "#/$defs/AspectRatio"
},
{
"type": "null"
}
]
},
"focus_follows_mouse": {
"description": "END OF LIFE FEATURE: Use https://github.com/LGUG2Z/masir instead",
"anyOf": [
{
"$ref": "#/$defs/FocusFollowsMouseImplementation"
},
{
"type": "null"
}
],
"deprecated": true
},
"global_work_area_offset": {
"description": "Global work area (space used for tiling) offset",
"anyOf": [
{
"$ref": "#/$defs/Rect"
},
{
"type": "null"
}
]
},
"ignore_rules": {
"description": "Individual window floating rules",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"invisible_borders": {
"description": "DEPRECATED from v0.1.22: no longer required",
"anyOf": [
{
"$ref": "#/$defs/Rect"
},
{
"type": "null"
}
],
"deprecated": true
},
"layered_applications": {
"description": "Identify applications that have the `WS_EX_LAYERED` extended window style",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"manage_rules": {
"description": "Individual window force-manage rules",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"minimum_window_height": {
"description": "DISCOURAGED: Minimum height for a window to be eligible for tiling",
"type": [
"integer",
"null"
],
"format": "int32"
},
"minimum_window_width": {
"description": "DISCOURAGED: Minimum width for a window to be eligible for tiling",
"type": [
"integer",
"null"
],
"format": "int32"
},
"monitor_index_preferences": {
"description": "Set monitor index preferences",
"type": [
"object",
"null"
],
"additionalProperties": false,
"patternProperties": {
"^\\d+$": {
"$ref": "#/$defs/Rect"
}
}
},
"monitors": {
"description": "Monitor and workspace configurations",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MonitorConfig"
}
},
"mouse_follows_focus": {
"description": "Enable or disable mouse follows focus",
"type": [
"boolean",
"null"
],
"default": true
},
"object_name_change_applications": {
"description": "Identify applications that send `EVENT_OBJECT_NAMECHANGE` on launch (very rare)",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"object_name_change_title_ignore_list": {
"description": "Do not process `EVENT_OBJECT_NAMECHANGE` events as Show events for identified applications matching these title regexes",
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"remove_titlebar_applications": {
"description": "HEAVILY DISCOURAGED: Identify applications for which komorebi should forcibly remove title bars",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"resize_delta": {
"description": "Delta to resize windows by",
"type": [
"integer",
"null"
],
"format": "int32",
"default": 50
},
"slow_application_compensation_time": {
"description": "How long to wait when compensating for slow applications, in milliseconds",
"type": [
"integer",
"null"
],
"format": "uint64",
"default": 20,
"minimum": 0
},
"slow_application_identifiers": {
"description": "Identify applications which are slow to send initial event notifications",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"stackbar": {
"description": "Stackbar configuration options",
"anyOf": [
{
"$ref": "#/$defs/StackbarConfig"
},
{
"type": "null"
}
]
},
"theme": {
"description": "Theme configuration options",
"anyOf": [
{
"$ref": "#/$defs/KomorebiTheme"
},
{
"type": "null"
}
]
},
"toggle_float_placement": {
"description": "Determines the placement of a new window when toggling to float",
"anyOf": [
{
"$ref": "#/$defs/Placement"
},
{
"type": "null"
}
],
"default": "CenterAndResize"
},
"transparency": {
"description": "Add transparency to unfocused windows",
"type": [
"boolean",
"null"
],
"default": false
},
"transparency_alpha": {
"description": "Alpha value for unfocused window transparency [[0-255]]",
"type": [
"integer",
"null"
],
"format": "uint8",
"default": 200,
"maximum": 255,
"minimum": 0
},
"transparency_ignore_rules": {
"description": "Individual window transparency ignore rules",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"tray_and_multi_window_applications": {
"description": "Identify tray and multi-window applications",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"unmanaged_window_operation_behaviour": {
"description": "Determine what happens when commands are sent while an unmanaged window is in the foreground",
"anyOf": [
{
"$ref": "#/$defs/OperationBehaviour"
},
{
"type": "null"
}
],
"default": "Op"
},
"window_container_behaviour": {
"description": "Determine what happens when a new window is opened",
"anyOf": [
{
"$ref": "#/$defs/WindowContainerBehaviour"
},
{
"type": "null"
}
],
"default": "Create"
},
"window_handling_behaviour": {
"description": "Which Windows API behaviour to use when manipulating windows",
"anyOf": [
{
"$ref": "#/$defs/WindowHandlingBehaviour"
},
{
"type": "null"
}
],
"default": "Sync"
},
"window_hiding_behaviour": {
"description": "Which Windows signal to use when hiding windows",
"anyOf": [
{
"$ref": "#/$defs/HidingBehaviour"
},
{
"type": "null"
}
],
"default": "Cloak"
}
},
"$defs": {
"AnimationStyle": {
"oneOf": [
{
"type": "string",
"enum": [
"Linear",
"EaseInSine",
"EaseOutSine",
"EaseInOutSine",
"EaseInQuad",
"EaseOutQuad",
"EaseInOutQuad",
"EaseInCubic",
"EaseInOutCubic",
"EaseInQuart",
"EaseOutQuart",
"EaseInOutQuart",
"EaseInQuint",
"EaseOutQuint",
"EaseInOutQuint",
"EaseInExpo",
"EaseOutExpo",
"EaseInOutExpo",
"EaseInCirc",
"EaseOutCirc",
"EaseInOutCirc",
"EaseInBack",
"EaseOutBack",
"EaseInOutBack",
"EaseInElastic",
"EaseOutElastic",
"EaseInOutElastic",
"EaseInBounce",
"EaseOutBounce",
"EaseInOutBounce"
]
},
{
"type": "object",
"properties": {
"CubicBezier": {
"type": "array",
"maxItems": 4,
"minItems": 4,
"prefixItems": [
{
"type": "number",
"format": "double"
},
{
"type": "number",
"format": "double"
},
{
"type": "number",
"format": "double"
},
{
"type": "number",
"format": "double"
}
]
}
},
"additionalProperties": false,
"required": [
"CubicBezier"
]
}
]
},
"AnimationsConfig": {
"type": "object",
"properties": {
"duration": {
"description": "Set the animation duration in ms",
"anyOf": [
{
"$ref": "#/$defs/PerAnimationPrefixConfig2"
},
{
"type": "null"
}
]
},
"enabled": {
"description": "Enable or disable animations",
"$ref": "#/$defs/PerAnimationPrefixConfig"
},
"fps": {
"description": "Set the animation FPS",
"type": [
"integer",
"null"
],
"format": "uint64",
"default": 60,
"minimum": 0
},
"style": {
"description": "Set the animation style",
"anyOf": [
{
"$ref": "#/$defs/PerAnimationPrefixConfig3"
},
{
"type": "null"
}
]
}
},
"required": [
"enabled"
]
},
"AppSpecificConfigurationPath": {
"anyOf": [
{
"description": "A single `applications.json` file",
"$ref": "#/$defs/PathBuf"
},
{
"description": "Multiple `applications.json` files",
"type": "array",
"items": {
"$ref": "#/$defs/PathBuf"
}
}
]
},
"ApplicationIdentifier": {
"type": "string",
"enum": [
"Exe",
"Class",
"Title",
"Path"
]
},
"AspectRatio": {
"anyOf": [
{
"description": "A predefined aspect ratio",
"$ref": "#/$defs/PredefinedAspectRatio"
},
{
"description": "A custom W:H aspect ratio",
"type": "array",
"maxItems": 2,
"minItems": 2,
"prefixItems": [
{
"type": "integer",
"format": "int32"
},
{
"type": "integer",
"format": "int32"
}
]
}
]
},
"Axis": {
"type": "string",
"enum": [
"Horizontal",
"Vertical",
"HorizontalAndVertical"
]
},
"Base16": {
"type": "string",
"enum": [
"3024",
"Apathy",
"Apprentice",
"Ashes",
"AtelierCaveLight",
"AtelierCave",
"AtelierDuneLight",
"AtelierDune",
"AtelierEstuaryLight",
"AtelierEstuary",
"AtelierForestLight",
"AtelierForest",
"AtelierHeathLight",
"AtelierHeath",
"AtelierLakesideLight",
"AtelierLakeside",
"AtelierPlateauLight",
"AtelierPlateau",
"AtelierSavannaLight",
"AtelierSavanna",
"AtelierSeasideLight",
"AtelierSeaside",
"AtelierSulphurpoolLight",
"AtelierSulphurpool",
"Atlas",
"AyuDark",
"AyuLight",
"AyuMirage",
"Aztec",
"Bespin",
"BlackMetalBathory",
"BlackMetalBurzum",
"BlackMetalDarkFuneral",
"BlackMetalGorgoroth",
"BlackMetalImmortal",
"BlackMetalKhold",
"BlackMetalMarduk",
"BlackMetalMayhem",
"BlackMetalNile",
"BlackMetalVenom",
"BlackMetal",
"Blueforest",
"Blueish",
"Brewer",
"Bright",
"Brogrammer",
"BrushtreesDark",
"Brushtrees",
"Caroline",
"CatppuccinFrappe",
"CatppuccinLatte",
"CatppuccinMacchiato",
"CatppuccinMocha",
"Chalk",
"Circus",
"ClassicDark",
"ClassicLight",
"Codeschool",
"Colors",
"Cupcake",
"Cupertino",
"DaOneBlack",
"DaOneGray",
"DaOneOcean",
"DaOnePaper",
"DaOneSea",
"DaOneWhite",
"DanqingLight",
"Danqing",
"Darcula",
"Darkmoss",
"Darktooth",
"Darkviolet",
"Decaf",
"DefaultDark",
"DefaultLight",
"Dirtysea",
"Dracula",
"EdgeDark",
"EdgeLight",
"Eighties",
"EmbersLight",
"Embers",
"Emil",
"EquilibriumDark",
"EquilibriumGrayDark",
"EquilibriumGrayLight",
"EquilibriumLight",
"Eris",
"Espresso",
"EvaDim",
"Eva",
"EvenokDark",
"EverforestDarkHard",
"Everforest",
"Flat",
"Framer",
"FruitSoda",
"Gigavolt",
"Github",
"GoogleDark",
"GoogleLight",
"Gotham",
"GrayscaleDark",
"GrayscaleLight",
"Greenscreen",
"Gruber",
"GruvboxDarkHard",
"GruvboxDarkMedium",
"GruvboxDarkPale",
"GruvboxDarkSoft",
"GruvboxLightHard",
"GruvboxLightMedium",
"GruvboxLightSoft",
"GruvboxMaterialDarkHard",
"GruvboxMaterialDarkMedium",
"GruvboxMaterialDarkSoft",
"GruvboxMaterialLightHard",
"GruvboxMaterialLightMedium",
"GruvboxMaterialLightSoft",
"Hardcore",
"Harmonic16Dark",
"Harmonic16Light",
"HeetchLight",
"Heetch",
"Helios",
"Hopscotch",
"HorizonDark",
"HorizonLight",
"HorizonTerminalDark",
"HorizonTerminalLight",
"HumanoidDark",
"HumanoidLight",
"IaDark",
"IaLight",
"Icy",
"Irblack",
"Isotope",
"Jabuti",
"Kanagawa",
"Katy",
"Kimber",
"Lime",
"Macintosh",
"Marrakesh",
"Materia",
"MaterialDarker",
"MaterialLighter",
"MaterialPalenight",
"MaterialVivid",
"Material",
"MeasuredDark",
"MeasuredLight",
"MellowPurple",
"MexicoLight",
"Mocha",
"Monokai",
"Moonlight",
"Mountain",
"Nebula",
"NordLight",
"Nord",
"Nova",
"Ocean",
"Oceanicnext",
"OneLight",
"OnedarkDark",
"Onedark",
"OutrunDark",
"OxocarbonDark",
"OxocarbonLight",
"Pandora",
"PapercolorDark",
"PapercolorLight",
"Paraiso",
"Pasque",
"Phd",
"Pico",
"Pinky",
"Pop",
"Porple",
"PreciousDarkEleven",
"PreciousDarkFifteen",
"PreciousLightWarm",
"PreciousLightWhite",
"PrimerDarkDimmed",
"PrimerDark",
"PrimerLight",
"Purpledream",
"Qualia",
"Railscasts",
"Rebecca",
"RosePineDawn",
"RosePineMoon",
"RosePine",
"Saga",
"Sagelight",
"Sakura",
"Sandcastle",
"SelenizedBlack",
"SelenizedDark",
"SelenizedLight",
"SelenizedWhite",
"Seti",
"ShadesOfPurple",
"ShadesmearDark",
"ShadesmearLight",
"Shapeshifter",
"SilkDark",
"SilkLight",
"Snazzy",
"SolarflareLight",
"Solarflare",
"SolarizedDark",
"SolarizedLight",
"Spaceduck",
"Spacemacs",
"Sparky",
"StandardizedDark",
"StandardizedLight",
"Stella",
"StillAlive",
"Summercamp",
"SummerfruitDark",
"SummerfruitLight",
"SynthMidnightDark",
"SynthMidnightLight",
"Tango",
"Tarot",
"Tender",
"TerracottaDark",
"Terracotta",
"TokyoCityDark",
"TokyoCityLight",
"TokyoCityTerminalDark",
"TokyoCityTerminalLight",
"TokyoNightDark",
"TokyoNightLight",
"TokyoNightMoon",
"TokyoNightStorm",
"TokyoNightTerminalDark",
"TokyoNightTerminalLight",
"TokyoNightTerminalStorm",
"TokyodarkTerminal",
"Tokyodark",
"TomorrowNightEighties",
"TomorrowNight",
"Tomorrow",
"Tube",
"Twilight",
"UnikittyDark",
"UnikittyLight",
"UnikittyReversible",
"Uwunicorn",
"Vesper",
"Vice",
"Vulcan",
"Windows10Light",
"Windows10",
"Windows95Light",
"Windows95",
"WindowsHighcontrastLight",
"WindowsHighcontrast",
"WindowsNtLight",
"WindowsNt",
"Woodland",
"XcodeDusk",
"Zenbones",
"Zenburn"
]
},
"Base16ColourPalette": {
"type": "object",
"properties": {
"base_00": {
"$ref": "#/$defs/Colour"
},
"base_01": {
"$ref": "#/$defs/Colour"
},
"base_02": {
"$ref": "#/$defs/Colour"
},
"base_03": {
"$ref": "#/$defs/Colour"
},
"base_04": {
"$ref": "#/$defs/Colour"
},
"base_05": {
"$ref": "#/$defs/Colour"
},
"base_06": {
"$ref": "#/$defs/Colour"
},
"base_07": {
"$ref": "#/$defs/Colour"
},
"base_08": {
"$ref": "#/$defs/Colour"
},
"base_09": {
"$ref": "#/$defs/Colour"
},
"base_0a": {
"$ref": "#/$defs/Colour"
},
"base_0b": {
"$ref": "#/$defs/Colour"
},
"base_0c": {
"$ref": "#/$defs/Colour"
},
"base_0d": {
"$ref": "#/$defs/Colour"
},
"base_0e": {
"$ref": "#/$defs/Colour"
},
"base_0f": {
"$ref": "#/$defs/Colour"
}
},
"required": [
"base_00",
"base_01",
"base_02",
"base_03",
"base_04",
"base_05",
"base_06",
"base_07",
"base_08",
"base_09",
"base_0a",
"base_0b",
"base_0c",
"base_0d",
"base_0e",
"base_0f"
]
},
"Base16Value": {
"type": "string",
"enum": [
"Base00",
"Base01",
"Base02",
"Base03",
"Base04",
"Base05",
"Base06",
"Base07",
"Base08",
"Base09",
"Base0A",
"Base0B",
"Base0C",
"Base0D",
"Base0E",
"Base0F"
]
},
"BorderColours": {
"type": "object",
"properties": {
"floating": {
"description": "Border colour when the container is in floating mode",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"monocle": {
"description": "Border colour when the container is in monocle mode",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"single": {
"description": "Border colour when the container contains a single window",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"stack": {
"description": "Border colour when the container contains multiple windows",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"unfocused": {
"description": "Border colour when the container is unfocused",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"unfocused_locked": {
"description": "Border colour when the container is unfocused and locked",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
}
}
},
"BorderImplementation": {
"oneOf": [
{
"description": "Use the adjustable komorebi border implementation",
"type": "string",
"const": "Komorebi"
},
{
"description": "Use the thin Windows accent border implementation",
"type": "string",
"const": "Windows"
}
]
},
"BorderStyle": {
"oneOf": [
{
"description": "Use the system border style",
"type": "string",
"const": "System"
},
{
"description": "Use the Windows 11-style rounded borders",
"type": "string",
"const": "Rounded"
},
{
"description": "Use the Windows 10-style square borders",
"type": "string",
"const": "Square"
}
]
},
"Catppuccin": {
"type": "string",
"enum": [
"Frappe",
"Latte",
"Macchiato",
"Mocha"
]
},
"CatppuccinValue": {
"type": "string",
"enum": [
"Rosewater",
"Flamingo",
"Pink",
"Mauve",
"Red",
"Maroon",
"Peach",
"Yellow",
"Green",
"Teal",
"Sky",
"Sapphire",
"Blue",
"Lavender",
"Text",
"Subtext1",
"Subtext0",
"Overlay2",
"Overlay1",
"Overlay0",
"Surface2",
"Surface1",
"Surface0",
"Base",
"Mantle",
"Crust"
]
},
"Colour": {
"anyOf": [
{
"description": "Colour represented as RGB",
"$ref": "#/$defs/Rgb"
},
{
"description": "Colour represented as Hex",
"$ref": "#/$defs/Hex"
}
]
},
"CrossBoundaryBehaviour": {
"oneOf": [
{
"description": "Attempt to perform actions across a workspace boundary",
"type": "string",
"const": "Workspace"
},
{
"description": "Attempt to perform actions across a monitor boundary",
"type": "string",
"const": "Monitor"
}
]
},
"DefaultLayout": {
"type": "string",
"enum": [
"BSP",
"Columns",
"Rows",
"VerticalStack",
"HorizontalStack",
"UltrawideVerticalStack",
"Grid",
"RightMainVerticalStack",
"Scrolling"
]
},
"FloatingLayerBehaviour": {
"oneOf": [
{
"description": "Tile new windows (unless they match a float rule or float override is active)",
"type": "string",
"const": "Tile"
},
{
"description": "Float new windows",
"type": "string",
"const": "Float"
}
]
},
"FocusFollowsMouseImplementation": {
"oneOf": [
{
"description": "A custom FFM implementation (slightly more CPU-intensive)",
"type": "string",
"const": "Komorebi"
},
{
"description": "The native (legacy) Windows FFM implementation",
"type": "string",
"const": "Windows"
}
]
},
"GridLayoutOptions": {
"type": "object",
"properties": {
"rows": {
"description": "Maximum number of rows per grid column",
"type": "integer",
"format": "uint",
"minimum": 0
}
},
"required": [
"rows"
]
},
"Hex": {
"type": "string",
"format": "color-hex"
},
"HidingBehaviour": {
"oneOf": [
{
"description": "END OF LIFE FEATURE: Use the `SW_HIDE` flag to hide windows when switching workspaces (has issues with Electron apps)",
"type": "string",
"const": "Hide",
"deprecated": true
},
{
"description": "Use the `SW_MINIMIZE` flag to hide windows when switching workspaces (has issues with frequent workspace switching)",
"type": "string",
"const": "Minimize"
},
{
"description": "Use the undocumented SetCloak Win32 function to hide windows when switching workspaces",
"type": "string",
"const": "Cloak"
}
]
},
"IdWithIdentifier": {
"type": "object",
"properties": {
"id": {
"type": "string"
},
"kind": {
"$ref": "#/$defs/ApplicationIdentifier"
},
"matching_strategy": {
"anyOf": [
{
"$ref": "#/$defs/MatchingStrategy"
},
{
"type": "null"
}
]
}
},
"required": [
"kind",
"id"
]
},
"KomorebiTheme": {
"oneOf": [
{
"description": "A theme from catppuccin-egui",
"type": "object",
"properties": {
"bar_accent": {
"description": "Komorebi status bar accent",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Blue"
},
"floating_border": {
"description": "Border colour when the window is floating",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Yellow"
},
"monocle_border": {
"description": "Border colour when the container is in monocle mode",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Pink"
},
"name": {
"description": "Name of the Catppuccin theme (theme previews: https://github.com/catppuccin/catppuccin)",
"$ref": "#/$defs/Catppuccin"
},
"palette": {
"type": "string",
"const": "Catppuccin"
},
"single_border": {
"description": "Border colour when the container contains a single window",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Blue"
},
"stack_border": {
"description": "Border colour when the container contains multiple windows",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Green"
},
"stackbar_background": {
"description": "Stackbar tab background colour",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Base"
},
"stackbar_focused_text": {
"description": "Stackbar focused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Green"
},
"stackbar_unfocused_text": {
"description": "Stackbar unfocused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Text"
},
"unfocused_border": {
"description": "Border colour when the container is unfocused",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Base"
},
"unfocused_locked_border": {
"description": "Border colour when the container is unfocused and locked",
"anyOf": [
{
"$ref": "#/$defs/CatppuccinValue"
},
{
"type": "null"
}
],
"default": "Red"
}
},
"required": [
"palette",
"name"
]
},
{
"description": "A theme from base16-egui-themes",
"type": "object",
"properties": {
"bar_accent": {
"description": "Komorebi status bar accent",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0D"
},
"floating_border": {
"description": "Border colour when the window is floating",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base09"
},
"monocle_border": {
"description": "Border colour when the container is in monocle mode",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0F"
},
"name": {
"description": "Name of the Base16 theme (theme previews: https://tinted-theming.github.io/tinted-gallery/)",
"$ref": "#/$defs/Base16"
},
"palette": {
"type": "string",
"const": "Base16"
},
"single_border": {
"description": "Border colour when the container contains a single window",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0D"
},
"stack_border": {
"description": "Border colour when the container contains multiple windows",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0B"
},
"stackbar_background": {
"description": "Stackbar tab background colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base01"
},
"stackbar_focused_text": {
"description": "Stackbar focused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0B"
},
"stackbar_unfocused_text": {
"description": "Stackbar unfocused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base05"
},
"unfocused_border": {
"description": "Border colour when the container is unfocused",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base01"
},
"unfocused_locked_border": {
"description": "Border colour when the container is unfocused and locked",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base08"
}
},
"required": [
"palette",
"name"
]
},
{
"description": "A custom Base16 theme",
"type": "object",
"properties": {
"bar_accent": {
"description": "Komorebi status bar accent",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0D"
},
"colours": {
"description": "Colours of the custom Base16 theme palette",
"$ref": "#/$defs/Base16ColourPalette"
},
"floating_border": {
"description": "Border colour when the window is floating",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base09"
},
"monocle_border": {
"description": "Border colour when the container is in monocle mode",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0F"
},
"palette": {
"type": "string",
"const": "Custom"
},
"single_border": {
"description": "Border colour when the container contains a single window",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0D"
},
"stack_border": {
"description": "Border colour when the container contains multiple windows",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0B"
},
"stackbar_background": {
"description": "Stackbar tab background colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base01"
},
"stackbar_focused_text": {
"description": "Stackbar focused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0B"
},
"stackbar_unfocused_text": {
"description": "Stackbar unfocused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base05"
},
"unfocused_border": {
"description": "Border colour when the container is unfocused",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base01"
},
"unfocused_locked_border": {
"description": "Border colour when the container is unfocused and locked",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base08"
}
},
"required": [
"palette",
"colours"
]
}
]
},
"LayoutOptions": {
"type": "object",
"properties": {
"grid": {
"description": "Options related to the Grid layout",
"anyOf": [
{
"$ref": "#/$defs/GridLayoutOptions"
},
{
"type": "null"
}
]
},
"scrolling": {
"description": "Options related to the Scrolling layout",
"anyOf": [
{
"$ref": "#/$defs/ScrollingLayoutOptions"
},
{
"type": "null"
}
]
}
}
},
"MatchingRule": {
"anyOf": [
{
"$ref": "#/$defs/IdWithIdentifier"
},
{
"type": "array",
"items": {
"$ref": "#/$defs/IdWithIdentifier"
}
}
]
},
"MatchingStrategy": {
"type": "string",
"enum": [
"Legacy",
"Equals",
"StartsWith",
"EndsWith",
"Contains",
"Regex",
"DoesNotEndWith",
"DoesNotStartWith",
"DoesNotEqual",
"DoesNotContain"
]
},
"MonitorConfig": {
"type": "object",
"properties": {
"container_padding": {
"description": "Container padding (default: global)",
"type": [
"integer",
"null"
],
"format": "int32"
},
"floating_layer_behaviour": {
"description": "Determine what happens to a new window when the Floating workspace layer is active",
"anyOf": [
{
"$ref": "#/$defs/FloatingLayerBehaviour"
},
{
"type": "null"
}
],
"default": "Tile"
},
"wallpaper": {
"description": "Specify a wallpaper for this monitor",
"anyOf": [
{
"$ref": "#/$defs/Wallpaper"
},
{
"type": "null"
}
]
},
"window_based_work_area_offset": {
"description": "Window based work area offset",
"anyOf": [
{
"$ref": "#/$defs/Rect"
},
{
"type": "null"
}
]
},
"window_based_work_area_offset_limit": {
"description": "Open window limit after which the window based work area offset will no longer be applied",
"type": [
"integer",
"null"
],
"format": "int",
"default": 1
},
"work_area_offset": {
"description": "Monitor-specific work area offset",
"anyOf": [
{
"$ref": "#/$defs/Rect"
},
{
"type": "null"
}
]
},
"workspace_padding": {
"description": "Workspace padding (default: global)",
"type": [
"integer",
"null"
],
"format": "int32"
},
"workspaces": {
"description": "Workspace configurations",
"type": "array",
"items": {
"$ref": "#/$defs/WorkspaceConfig"
}
}
},
"required": [
"workspaces"
]
},
"MoveBehaviour": {
"oneOf": [
{
"description": "Swap the window container with the window container at the edge of the adjacent monitor",
"type": "string",
"const": "Swap"
},
{
"description": "Insert the window container into the focused workspace on the adjacent monitor",
"type": "string",
"const": "Insert"
},
{
"description": "Do nothing if trying to move a window container in the direction of an adjacent monitor",
"type": "string",
"const": "NoOp"
}
]
},
"OperationBehaviour": {
"oneOf": [
{
"description": "Process komorebic commands on temporarily unmanaged/floated windows",
"type": "string",
"const": "Op"
},
{
"description": "Ignore komorebic commands on temporarily unmanaged/floated windows",
"type": "string",
"const": "NoOp"
}
]
},
"PathBuf": {
"type": "string"
},
"PerAnimationPrefixConfig": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
{
"type": "boolean"
}
]
},
"PerAnimationPrefixConfig2": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "uint64",
"minimum": 0
}
},
{
"type": "integer",
"format": "uint64",
"minimum": 0
}
]
},
"PerAnimationPrefixConfig3": {
"anyOf": [
{
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/AnimationStyle"
}
},
{
"$ref": "#/$defs/AnimationStyle"
}
]
},
"Placement": {
"oneOf": [
{
"description": "Does not change the size or position of the window",
"type": "string",
"const": "None"
},
{
"description": "Center the window without changing the size",
"type": "string",
"const": "Center"
},
{
"description": "Center the window and resize it according to the `AspectRatio`",
"type": "string",
"const": "CenterAndResize"
}
]
},
"PredefinedAspectRatio": {
"oneOf": [
{
"description": "21:9",
"type": "string",
"const": "Ultrawide"
},
{
"description": "16:9",
"type": "string",
"const": "Widescreen"
},
{
"description": "4:3",
"type": "string",
"const": "Standard"
}
]
},
"Rect": {
"type": "object",
"properties": {
"bottom": {
"description": "The bottom point in a Win32 Rect",
"type": "integer",
"format": "int32"
},
"left": {
"description": "The left point in a Win32 Rect",
"type": "integer",
"format": "int32"
},
"right": {
"description": "The right point in a Win32 Rect",
"type": "integer",
"format": "int32"
},
"top": {
"description": "The top point in a Win32 Rect",
"type": "integer",
"format": "int32"
}
},
"required": [
"left",
"top",
"right",
"bottom"
]
},
"Rgb": {
"type": "object",
"properties": {
"b": {
"description": "Blue",
"type": "integer",
"format": "uint32",
"minimum": 0
},
"g": {
"description": "Green",
"type": "integer",
"format": "uint32",
"minimum": 0
},
"r": {
"description": "Red",
"type": "integer",
"format": "uint32",
"minimum": 0
}
},
"required": [
"r",
"g",
"b"
]
},
"ScrollingLayoutOptions": {
"type": "object",
"properties": {
"center_focused_column": {
"description": "With an odd number of visible columns, keep the focused window column centered",
"type": [
"boolean",
"null"
]
},
"columns": {
"description": "Desired number of visible columns (default: 3)",
"type": "integer",
"format": "uint",
"minimum": 0
}
},
"required": [
"columns"
]
},
"StackbarConfig": {
"type": "object",
"properties": {
"height": {
"description": "Stackbar height",
"type": [
"integer",
"null"
],
"format": "int32"
},
"label": {
"description": "Stackbar label",
"anyOf": [
{
"$ref": "#/$defs/StackbarLabel"
},
{
"type": "null"
}
]
},
"mode": {
"description": "Stackbar mode",
"anyOf": [
{
"$ref": "#/$defs/StackbarMode"
},
{
"type": "null"
}
],
"default": "Never"
},
"tabs": {
"description": "Stackbar tab configuration options",
"anyOf": [
{
"$ref": "#/$defs/TabsConfig"
},
{
"type": "null"
}
]
}
}
},
"StackbarLabel": {
"type": "string",
"enum": [
"Process",
"Title"
]
},
"StackbarMode": {
"type": "string",
"enum": [
"Always",
"Never",
"OnStack"
]
},
"TabsConfig": {
"type": "object",
"properties": {
"background": {
"description": "Tab background colour",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"focused_text": {
"description": "Focused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"font_family": {
"description": "Font family",
"type": [
"string",
"null"
]
},
"font_size": {
"description": "Font size",
"type": [
"integer",
"null"
],
"format": "int32"
},
"unfocused_text": {
"description": "Unfocused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Colour"
},
{
"type": "null"
}
]
},
"width": {
"description": "Width of a stackbar tab",
"type": [
"integer",
"null"
],
"format": "int32"
}
}
},
"ThemeOptions": {
"type": "object",
"properties": {
"bar_accent": {
"description": "Komorebi status bar accent",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0D"
},
"floating_border": {
"description": "Border colour when the window is floating",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base09"
},
"monocle_border": {
"description": "Border colour when the container is in monocle mode",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0F"
},
"single_border": {
"description": "Border colour when the container contains a single window",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0D"
},
"stack_border": {
"description": "Border colour when the container contains multiple windows",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0B"
},
"stackbar_background": {
"description": "Stackbar tab background colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base01"
},
"stackbar_focused_text": {
"description": "Stackbar focused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base0B"
},
"stackbar_unfocused_text": {
"description": "Stackbar unfocused tab text colour",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base05"
},
"theme_variant": {
"description": "Specify Light or Dark variant for theme generation",
"anyOf": [
{
"$ref": "#/$defs/ThemeVariant"
},
{
"type": "null"
}
],
"default": "Dark"
},
"unfocused_border": {
"description": "Border colour when the container is unfocused",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base01"
},
"unfocused_locked_border": {
"description": "Border colour when the container is unfocused and locked",
"anyOf": [
{
"$ref": "#/$defs/Base16Value"
},
{
"type": "null"
}
],
"default": "Base08"
}
}
},
"ThemeVariant": {
"type": "string",
"enum": [
"Dark",
"Light"
]
},
"Wallpaper": {
"type": "object",
"properties": {
"generate_theme": {
"description": "Generate and apply Base16 theme for this wallpaper",
"type": [
"boolean",
"null"
],
"default": true
},
"path": {
"description": "Path to the wallpaper image file",
"$ref": "#/$defs/PathBuf"
},
"theme_options": {
"description": "Specify Light or Dark variant for theme generation",
"anyOf": [
{
"$ref": "#/$defs/ThemeOptions"
},
{
"type": "null"
}
],
"default": "Dark"
}
},
"required": [
"path"
]
},
"WindowContainerBehaviour": {
"oneOf": [
{
"description": "Create a new container for each new window",
"type": "string",
"const": "Create"
},
{
"description": "Append new windows to the focused window container",
"type": "string",
"const": "Append"
}
]
},
"WindowHandlingBehaviour": {
"type": "string",
"enum": [
"Sync",
"Async"
]
},
"WorkspaceConfig": {
"type": "object",
"properties": {
"apply_window_based_work_area_offset": {
"description": "Apply this monitor's window-based work area offset",
"type": [
"boolean",
"null"
],
"default": true
},
"container_padding": {
"description": "Container padding (default: global)",
"type": [
"integer",
"null"
],
"format": "int32"
},
"custom_layout": {
"description": "END OF LIFE FEATURE: Custom Layout",
"anyOf": [
{
"$ref": "#/$defs/PathBuf"
},
{
"type": "null"
}
],
"deprecated": true
},
"custom_layout_rules": {
"description": "END OF LIFE FEATURE: Custom layout rules",
"type": [
"object",
"null"
],
"additionalProperties": false,
"deprecated": true,
"patternProperties": {
"^\\d+$": {
"type": "string"
}
}
},
"float_override": {
"description": "Enable or disable float override, which makes it so every new window opens in floating mode",
"type": [
"boolean",
"null"
],
"default": false
},
"floating_layer_behaviour": {
"description": "Determine what happens to a new window when the Floating workspace layer is active",
"anyOf": [
{
"$ref": "#/$defs/FloatingLayerBehaviour"
},
{
"type": "null"
}
],
"default": "Tile"
},
"initial_workspace_rules": {
"description": "Initial workspace application rules",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
},
"layout": {
"description": "Layout",
"anyOf": [
{
"$ref": "#/$defs/DefaultLayout"
},
{
"type": "null"
}
],
"default": "BSP"
},
"layout_flip": {
"description": "Specify an axis on which to flip the selected layout",
"anyOf": [
{
"$ref": "#/$defs/Axis"
},
{
"type": "null"
}
]
},
"layout_options": {
"description": "Layout-specific options",
"anyOf": [
{
"$ref": "#/$defs/LayoutOptions"
},
{
"type": "null"
}
]
},
"layout_rules": {
"description": "Layout rules in the format of threshold => layout",
"type": [
"object",
"null"
],
"additionalProperties": false,
"patternProperties": {
"^\\d+$": {
"$ref": "#/$defs/DefaultLayout"
}
}
},
"name": {
"description": "Name",
"type": "string"
},
"tile": {
"description": "Enable or disable tiling for the workspace",
"type": [
"boolean",
"null"
],
"default": true
},
"wallpaper": {
"description": "Specify a wallpaper for this workspace",
"anyOf": [
{
"$ref": "#/$defs/Wallpaper"
},
{
"type": "null"
}
]
},
"window_container_behaviour": {
"description": "Determine what happens when a new window is opened",
"anyOf": [
{
"$ref": "#/$defs/WindowContainerBehaviour"
},
{
"type": "null"
}
],
"default": "Create"
},
"window_container_behaviour_rules": {
"description": "Window container behaviour rules in the format of threshold => behaviour",
"type": [
"object",
"null"
],
"additionalProperties": false,
"patternProperties": {
"^\\d+$": {
"$ref": "#/$defs/WindowContainerBehaviour"
}
}
},
"work_area_offset": {
"description": "Workspace specific work area offset",
"anyOf": [
{
"$ref": "#/$defs/Rect"
},
{
"type": "null"
}
]
},
"workspace_padding": {
"description": "Workspace padding (default: global)",
"type": [
"integer",
"null"
],
"format": "int32"
},
"workspace_rules": {
"description": "Permanent workspace application rules",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/MatchingRule"
}
}
},
"required": [
"name"
]
},
"ZOrder": {
"type": "string",
"enum": [
"Top",
"NoTopMost",
"Bottom",
"TopMost"
]
}
}
}