bottom/schema/nightly/bottom.json
Clement Tsang 28972a1e64
refactor: refactor styling options (#1499)
Introduce a new configuration system for styling.
2024-07-29 09:03:35 +00:00

987 lines
20 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "https://github.com/ClementTsang/bottom/blob/main/schema/nightly/bottom.json",
"title": "Schema for bottom's configs (nightly)",
"description": "https://clementtsang.github.io/bottom/nightly/configuration/config-file",
"type": "object",
"properties": {
"cpu": {
"anyOf": [
{
"$ref": "#/definitions/CpuConfig"
},
{
"type": "null"
}
]
},
"disk": {
"anyOf": [
{
"$ref": "#/definitions/DiskConfig"
},
{
"type": "null"
}
]
},
"flags": {
"anyOf": [
{
"$ref": "#/definitions/FlagConfig"
},
{
"type": "null"
}
]
},
"network": {
"anyOf": [
{
"$ref": "#/definitions/NetworkConfig"
},
{
"type": "null"
}
]
},
"processes": {
"anyOf": [
{
"$ref": "#/definitions/ProcessesConfig"
},
{
"type": "null"
}
]
},
"row": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/row"
}
},
"styles": {
"anyOf": [
{
"$ref": "#/definitions/StyleConfig"
},
{
"type": "null"
}
]
},
"temperature": {
"anyOf": [
{
"$ref": "#/definitions/TempConfig"
},
{
"type": "null"
}
]
}
},
"definitions": {
"BatteryStyle": {
"description": "Styling specific to the battery widget.",
"type": "object",
"properties": {
"high_battery": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"low_battery": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"medium_battery": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
}
}
},
"ColorStr": {
"type": "string"
},
"CpuConfig": {
"description": "CPU column settings.",
"type": "object",
"properties": {
"default": {
"$ref": "#/definitions/CpuDefault"
}
}
},
"CpuDefault": {
"description": "The default selection of the CPU widget. If the given selection is invalid, we will fall back to all.",
"type": "string",
"enum": [
"all",
"average"
]
},
"CpuStyle": {
"description": "Styling specific to the CPU widget.",
"type": "object",
"properties": {
"all_entry_color": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"avg_entry_color": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"cpu_core_colors": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/ColorStr"
}
}
}
},
"DiskConfig": {
"description": "Disk configuration.",
"type": "object",
"properties": {
"mount_filter": {
"description": "A filter over the mount names.",
"anyOf": [
{
"$ref": "#/definitions/IgnoreList"
},
{
"type": "null"
}
]
},
"name_filter": {
"description": "A filter over the disk names.",
"anyOf": [
{
"$ref": "#/definitions/IgnoreList"
},
{
"type": "null"
}
]
}
}
},
"FinalWidget": {
"description": "Represents a widget.",
"type": "object",
"required": [
"type"
],
"properties": {
"default": {
"type": [
"boolean",
"null"
]
},
"ratio": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"type": {
"type": "string"
}
}
},
"FlagConfig": {
"type": "object",
"properties": {
"autohide_time": {
"type": [
"boolean",
"null"
]
},
"basic": {
"type": [
"boolean",
"null"
]
},
"battery": {
"type": [
"boolean",
"null"
]
},
"case_sensitive": {
"type": [
"boolean",
"null"
]
},
"cpu_left_legend": {
"type": [
"boolean",
"null"
]
},
"current_usage": {
"type": [
"boolean",
"null"
]
},
"default_time_value": {
"anyOf": [
{
"$ref": "#/definitions/StringOrNum"
},
{
"type": "null"
}
]
},
"default_widget_count": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"default_widget_type": {
"type": [
"string",
"null"
]
},
"disable_advanced_kill": {
"type": [
"boolean",
"null"
]
},
"disable_click": {
"type": [
"boolean",
"null"
]
},
"dot_marker": {
"type": [
"boolean",
"null"
]
},
"enable_cache_memory": {
"type": [
"boolean",
"null"
]
},
"enable_gpu": {
"type": [
"boolean",
"null"
]
},
"expanded": {
"type": [
"boolean",
"null"
]
},
"group_processes": {
"type": [
"boolean",
"null"
]
},
"hide_avg_cpu": {
"type": [
"boolean",
"null"
]
},
"hide_table_gap": {
"type": [
"boolean",
"null"
]
},
"hide_time": {
"type": [
"boolean",
"null"
]
},
"memory_legend": {
"type": [
"string",
"null"
]
},
"network_legend": {
"type": [
"string",
"null"
]
},
"network_use_binary_prefix": {
"type": [
"boolean",
"null"
]
},
"network_use_bytes": {
"type": [
"boolean",
"null"
]
},
"network_use_log": {
"type": [
"boolean",
"null"
]
},
"no_write": {
"type": [
"boolean",
"null"
]
},
"process_command": {
"type": [
"boolean",
"null"
]
},
"process_memory_as_value": {
"type": [
"boolean",
"null"
]
},
"rate": {
"anyOf": [
{
"$ref": "#/definitions/StringOrNum"
},
{
"type": "null"
}
]
},
"regex": {
"type": [
"boolean",
"null"
]
},
"retention": {
"anyOf": [
{
"$ref": "#/definitions/StringOrNum"
},
{
"type": "null"
}
]
},
"show_table_scroll_position": {
"type": [
"boolean",
"null"
]
},
"temperature_type": {
"type": [
"string",
"null"
]
},
"time_delta": {
"anyOf": [
{
"$ref": "#/definitions/StringOrNum"
},
{
"type": "null"
}
]
},
"tree": {
"type": [
"boolean",
"null"
]
},
"unnormalized_cpu": {
"type": [
"boolean",
"null"
]
},
"use_old_network_legend": {
"type": [
"boolean",
"null"
]
},
"whole_word": {
"type": [
"boolean",
"null"
]
}
}
},
"GraphStyle": {
"description": "General styling for graph widgets.",
"type": "object",
"properties": {
"graph_color": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"legend_text": {
"anyOf": [
{
"$ref": "#/definitions/TextStyleConfig"
},
{
"type": "null"
}
]
}
}
},
"IgnoreList": {
"type": "object",
"required": [
"list"
],
"properties": {
"case_sensitive": {
"default": false,
"type": "boolean"
},
"is_list_ignored": {
"default": true,
"type": "boolean"
},
"list": {
"type": "array",
"items": {
"type": "string"
}
},
"regex": {
"default": false,
"type": "boolean"
},
"whole_word": {
"default": false,
"type": "boolean"
}
}
},
"MemoryStyle": {
"description": "Styling specific to the memory widget.",
"type": "object",
"properties": {
"arc": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"cache": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"gpus": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/ColorStr"
}
},
"ram": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"swap": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
}
}
},
"NetworkConfig": {
"description": "Network configuration.",
"type": "object",
"properties": {
"interface_filter": {
"description": "A filter over the network interface names.",
"anyOf": [
{
"$ref": "#/definitions/IgnoreList"
},
{
"type": "null"
}
]
}
}
},
"NetworkStyle": {
"description": "Styling specific to the network widget.",
"type": "object",
"properties": {
"rx": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"rx_total": {
"description": "Set the colour of the \"rx total\" text. This only affects basic mode.",
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"tx": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"tx_total": {
"description": "Set the colour of the \"tx total\" text. This only affects basic mode.",
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
}
}
},
"ProcColumn": {
"description": "A column in the process widget.",
"type": "string",
"enum": [
"PID",
"Count",
"Name",
"Command",
"CPU%",
"Mem",
"Mem%",
"R/s",
"Read",
"Rps",
"W/s",
"Write",
"Wps",
"T.Read",
"TWrite",
"T.Write",
"TRead",
"State",
"User",
"Time",
"GMem",
"GMem%",
"GPU%"
]
},
"ProcessesConfig": {
"description": "Process configuration.",
"type": "object",
"properties": {
"columns": {
"description": "A list of process widget columns.",
"type": "array",
"items": {
"$ref": "#/definitions/ProcColumn"
}
}
}
},
"RowChildren": {
"description": "Represents a child of a Row - either a Col (column) or a FinalWidget.\n\nA Col can also have an optional length and children. We only allow columns to have FinalWidgets as children, lest we get some amount of mutual recursion between Row and Col.",
"anyOf": [
{
"$ref": "#/definitions/FinalWidget"
},
{
"type": "object",
"required": [
"child"
],
"properties": {
"child": {
"type": "array",
"items": {
"$ref": "#/definitions/FinalWidget"
}
},
"ratio": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
}
}
]
},
"StringOrNum": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
]
},
"StyleConfig": {
"description": "Style-related configs.",
"type": "object",
"properties": {
"battery": {
"description": "Styling for the battery widget.",
"anyOf": [
{
"$ref": "#/definitions/BatteryStyle"
},
{
"type": "null"
}
]
},
"cpu": {
"description": "Styling for the CPU widget.",
"anyOf": [
{
"$ref": "#/definitions/CpuStyle"
},
{
"type": "null"
}
]
},
"graphs": {
"description": "Styling for graph widgets.",
"anyOf": [
{
"$ref": "#/definitions/GraphStyle"
},
{
"type": "null"
}
]
},
"memory": {
"description": "Styling for the memory widget.",
"anyOf": [
{
"$ref": "#/definitions/MemoryStyle"
},
{
"type": "null"
}
]
},
"network": {
"description": "Styling for the network widget.",
"anyOf": [
{
"$ref": "#/definitions/NetworkStyle"
},
{
"type": "null"
}
]
},
"tables": {
"description": "Styling for table widgets.",
"anyOf": [
{
"$ref": "#/definitions/TableStyle"
},
{
"type": "null"
}
]
},
"theme": {
"description": "A built-in theme.\n\nIf this is and a custom colour are both set, in the config file, the custom colour scheme will be prioritized first. If a theme is set in the command-line args, however, it will always be prioritized first.",
"type": [
"string",
"null"
]
},
"widgets": {
"description": "Styling for general widgets.",
"anyOf": [
{
"$ref": "#/definitions/WidgetStyle"
},
{
"type": "null"
}
]
}
}
},
"TableStyle": {
"description": "General styling for table widgets.",
"type": "object",
"properties": {
"headers": {
"anyOf": [
{
"$ref": "#/definitions/TextStyleConfig"
},
{
"type": "null"
}
]
}
}
},
"TempConfig": {
"description": "Temperature configuration.",
"type": "object",
"properties": {
"sensor_filter": {
"description": "A filter over the sensor names.",
"anyOf": [
{
"$ref": "#/definitions/IgnoreList"
},
{
"type": "null"
}
]
}
}
},
"TextStyleConfig": {
"description": "A style for text.",
"type": "object",
"properties": {
"bg_color": {
"description": "A built-in ANSI colour, RGB hex, or RGB colour code.",
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"bold": {
"description": "Whether to make this text bolded or not. If not set, will default to built-in defaults.",
"type": [
"boolean",
"null"
]
},
"color": {
"description": "A built-in ANSI colour, RGB hex, or RGB colour code.",
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
}
}
},
"WidgetStyle": {
"description": "General styling for generic widgets.",
"type": "object",
"properties": {
"border": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"disabled_text": {
"anyOf": [
{
"$ref": "#/definitions/TextStyleConfig"
},
{
"type": "null"
}
]
},
"selected_border": {
"anyOf": [
{
"$ref": "#/definitions/ColorStr"
},
{
"type": "null"
}
]
},
"selected_text": {
"anyOf": [
{
"$ref": "#/definitions/TextStyleConfig"
},
{
"type": "null"
}
]
},
"text": {
"anyOf": [
{
"$ref": "#/definitions/TextStyleConfig"
},
{
"type": "null"
}
]
},
"widget_title": {
"anyOf": [
{
"$ref": "#/definitions/TextStyleConfig"
},
{
"type": "null"
}
]
}
}
},
"row": {
"description": "Represents a row. This has a length of some sort (optional) and a vector of children.",
"type": "object",
"properties": {
"child": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/definitions/RowChildren"
}
},
"ratio": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
}
}
}
}