mirror of
https://github.com/LGUG2Z/komorebi.git
synced 2026-01-11 22:12:53 +01:00
This commit adds support for a v2 format of the application specific configuration file, centralizing on JSON to maximize the knowledge crossover for people already familiar with the types used in komorebi.json. The biggest difference besides the format change is that matchers must be used explicitly for every kind of rule, rather than being able to specify options on a default rule. This is a bit more verbose, but ultimately allows for significantly more flexibility.
169 lines
4.0 KiB
JSON
169 lines
4.0 KiB
JSON
{
|
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
"title": "ApplicationSpecificConfiguration",
|
|
"type": "object",
|
|
"additionalProperties": {
|
|
"$ref": "#/definitions/AscApplicationRulesOrSchema"
|
|
},
|
|
"definitions": {
|
|
"ApplicationIdentifier": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Exe",
|
|
"Class",
|
|
"Title",
|
|
"Path"
|
|
]
|
|
},
|
|
"AscApplicationRules": {
|
|
"description": "Rules that determine how an application is handled",
|
|
"type": "object",
|
|
"properties": {
|
|
"floating": {
|
|
"description": "Rules to manage specific windows as floating windows",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
},
|
|
"ignore": {
|
|
"description": "Rules to ignore specific windows",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
},
|
|
"layered": {
|
|
"description": "Rules to identify applications which have the `WS_EX_LAYERED` Extended Window Style",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
},
|
|
"manage": {
|
|
"description": "Rules to forcibly manage specific windows",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
},
|
|
"object_name_change": {
|
|
"description": "Rules to identify applications which send the `EVENT_OBJECT_NAMECHANGE` event on launch",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
},
|
|
"slow_application": {
|
|
"description": "Rules to identify applications which are slow to send initial event notifications",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
},
|
|
"transparency_ignore": {
|
|
"description": "Rules to ignore specific windows from the transparency feature",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
},
|
|
"tray_and_multi_window": {
|
|
"description": "Rules to identify applications which minimize to the tray or have multiple windows",
|
|
"type": [
|
|
"array",
|
|
"null"
|
|
],
|
|
"items": {
|
|
"$ref": "#/definitions/MatchingRule"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"AscApplicationRulesOrSchema": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/AscApplicationRules"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"IdWithIdentifier": {
|
|
"type": "object",
|
|
"required": [
|
|
"id",
|
|
"kind"
|
|
],
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"kind": {
|
|
"$ref": "#/definitions/ApplicationIdentifier"
|
|
},
|
|
"matching_strategy": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/MatchingStrategy"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"MatchingRule": {
|
|
"anyOf": [
|
|
{
|
|
"$ref": "#/definitions/IdWithIdentifier"
|
|
},
|
|
{
|
|
"type": "array",
|
|
"items": {
|
|
"$ref": "#/definitions/IdWithIdentifier"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"MatchingStrategy": {
|
|
"type": "string",
|
|
"enum": [
|
|
"Legacy",
|
|
"Equals",
|
|
"StartsWith",
|
|
"EndsWith",
|
|
"Contains",
|
|
"Regex",
|
|
"DoesNotEndWith",
|
|
"DoesNotStartWith",
|
|
"DoesNotEqual",
|
|
"DoesNotContain"
|
|
]
|
|
}
|
|
}
|
|
}
|