Files
bottom/schema/nightly/bottom.json
T
Clement Tsang edc295e3ed other: partial migration of network/memory config options from flags (#2062)
This change moves some options to a more appropriate section for the config file. This only deprecates the old options for now, so they're still valid, but we will remove them later (maybe after the next stable release, to give warning).

One thing I want to do for the legend position options is maybe expand it, and now is the best time to do so, but for now I'm just copying it over verbatim.

The deprecated options will also emit a warning to stderr.

This PR also contains a driveby to alias `[network]` to `[network_graph]`.
2026-05-12 04:59:59 -04:00

1389 lines
31 KiB
JSON

{
"$id": "https://github.com/ClementTsang/bottom/blob/main/schema/nightly/bottom.json",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"title": "Schema for bottom's config file (nightly)",
"description": "https://bottom.pages.dev/nightly/configuration/config-file/",
"type": "object",
"properties": {
"cpu": {
"anyOf": [
{
"$ref": "#/$defs/CpuConfig"
},
{
"type": "null"
}
]
},
"disk": {
"anyOf": [
{
"$ref": "#/$defs/DiskConfig"
},
{
"type": "null"
}
]
},
"flags": {
"anyOf": [
{
"$ref": "#/$defs/GeneralConfig"
},
{
"type": "null"
}
]
},
"memory_graph": {
"anyOf": [
{
"$ref": "#/$defs/MemoryGraphConfig"
},
{
"type": "null"
}
]
},
"network_graph": {
"anyOf": [
{
"$ref": "#/$defs/NetworkGraphConfig"
},
{
"type": "null"
}
]
},
"processes": {
"anyOf": [
{
"$ref": "#/$defs/ProcessesConfig"
},
{
"type": "null"
}
]
},
"row": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/row"
}
},
"styles": {
"anyOf": [
{
"$ref": "#/$defs/StyleConfig"
},
{
"type": "null"
}
]
},
"temperature": {
"anyOf": [
{
"$ref": "#/$defs/TempConfig"
},
{
"type": "null"
}
]
},
"temperature_graph": {
"anyOf": [
{
"$ref": "#/$defs/TempGraphConfig"
},
{
"type": "null"
}
]
}
},
"$defs": {
"BatteryStyle": {
"description": "Styling specific to the battery widget.",
"type": "object",
"properties": {
"high_battery_colour": {
"description": "The colour of the battery widget bar when the battery is over 50%.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"low_battery_colour": {
"description": "The colour of the battery widget bar when the battery is under 10%.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"medium_battery_colour": {
"description": "The colour of the battery widget bar when the battery between 10% to\n50%.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
}
}
},
"ColourStr": {
"type": "string"
},
"CpuConfig": {
"description": "CPU column settings.",
"type": "object",
"properties": {
"default": {
"description": "The default selected entry of the CPU widget.",
"$ref": "#/$defs/CpuDefault"
},
"show_decimal": {
"description": "Whether to show a decimal place for CPU usage values.",
"type": [
"boolean",
"null"
]
}
}
},
"CpuDefault": {
"description": "The default selected entry of the CPU widget.",
"type": "string",
"enum": [
"all",
"average"
]
},
"CpuStyle": {
"description": "Styling specific to the CPU widget.",
"type": "object",
"properties": {
"all_entry_colour": {
"description": "The colour of the \"All\" CPU label.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"avg_entry_colour": {
"description": "The colour of the average CPU label and graph line.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"cpu_core_colours": {
"description": "Colour of each CPU threads' label and graph line. Read in order.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/ColourStr"
}
}
}
},
"DiskConfig": {
"description": "Disk configuration.",
"type": "object",
"properties": {
"columns": {
"description": "A list of disk widget columns.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/DiskWidgetColumn"
}
},
"default_sort": {
"description": "The default sort column.",
"anyOf": [
{
"$ref": "#/$defs/DiskWidgetColumn"
},
{
"type": "null"
}
]
},
"mount_filter": {
"description": "A filter over the mount names.",
"anyOf": [
{
"$ref": "#/$defs/IgnoreList"
},
{
"type": "null"
}
]
},
"name_filter": {
"description": "A filter over the disk names.",
"anyOf": [
{
"$ref": "#/$defs/IgnoreList"
},
{
"type": "null"
}
]
}
}
},
"DiskWidgetColumn": {
"type": "string",
"enum": [
"Disk",
"Free",
"Free%",
"Mount",
"R/s",
"Read",
"Rps",
"Total",
"Used",
"Used%",
"W/s",
"Wps",
"Write",
"disk",
"free",
"free%",
"mount",
"r/s",
"read",
"rps",
"total",
"used",
"used%",
"w/s",
"wps",
"write"
]
},
"FinalWidget": {
"description": "Represents a widget.",
"type": "object",
"properties": {
"default": {
"type": [
"boolean",
"null"
]
},
"ratio": {
"type": [
"integer",
"null"
],
"format": "uint16",
"maximum": 65535,
"minimum": 0
},
"type": {
"type": "string"
}
},
"required": [
"type"
]
},
"GeneralConfig": {
"type": "object",
"properties": {
"autohide_time": {
"type": [
"boolean",
"null"
]
},
"average_cpu_row": {
"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": "#/$defs/StringOrNum"
},
{
"type": "null"
}
]
},
"default_widget_count": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0
},
"default_widget_type": {
"type": [
"string",
"null"
]
},
"disable_advanced_kill": {
"type": [
"boolean",
"null"
]
},
"disable_click": {
"type": [
"boolean",
"null"
]
},
"disable_gpu": {
"type": [
"boolean",
"null"
]
},
"disable_keys": {
"type": [
"boolean",
"null"
]
},
"dot_marker": {
"type": [
"boolean",
"null"
]
},
"enable_cache_memory": {
"type": [
"boolean",
"null"
]
},
"expanded": {
"type": [
"boolean",
"null"
]
},
"free_arc": {
"type": [
"boolean",
"null"
]
},
"group_processes": {
"type": [
"boolean",
"null"
]
},
"hide_avg_cpu": {
"type": [
"boolean",
"null"
]
},
"hide_k_threads": {
"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": "#/$defs/StringOrNum"
},
{
"type": "null"
}
]
},
"read_only": {
"type": [
"boolean",
"null"
]
},
"regex": {
"type": [
"boolean",
"null"
]
},
"retention": {
"anyOf": [
{
"$ref": "#/$defs/StringOrNum"
},
{
"type": "null"
}
]
},
"show_table_scroll_bar": {
"type": [
"boolean",
"null"
]
},
"show_table_scroll_position": {
"type": [
"boolean",
"null"
]
},
"table_gap": {
"$ref": "#/$defs/TableGap",
"default": "space"
},
"temperature_type": {
"type": [
"string",
"null"
]
},
"time_delta": {
"anyOf": [
{
"$ref": "#/$defs/StringOrNum"
},
{
"type": "null"
}
]
},
"tree": {
"type": [
"boolean",
"null"
]
},
"tree_collapse": {
"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_colour": {
"description": "The general colour of the parts of the graph.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"legend_text": {
"description": "Text styling for graph's legend text.",
"anyOf": [
{
"$ref": "#/$defs/TextStyleConfig"
},
{
"type": "null"
}
]
}
}
},
"IgnoreList": {
"type": "object",
"properties": {
"case_sensitive": {
"type": "boolean",
"default": false
},
"is_list_ignored": {
"type": "boolean",
"default": true
},
"list": {
"type": "array",
"items": {
"type": "string"
}
},
"regex": {
"type": "boolean",
"default": false
},
"whole_word": {
"type": "boolean",
"default": false
}
},
"required": [
"list"
]
},
"MemoryGraphConfig": {
"description": "Memory-related configuration file options.",
"type": "object",
"properties": {
"legend_position": {
"description": "Where to place the legend for the memory chart widget.",
"type": [
"string",
"null"
]
}
}
},
"MemoryStyle": {
"description": "Styling specific to the memory widget.",
"type": "object",
"properties": {
"arc_colour": {
"description": "The colour of the ARC label and graph line.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"cache_colour": {
"description": "The colour of the cache label and graph line. Does not do anything on\nWindows.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"gpu_colours": {
"description": "Colour of each GPU's memory label and graph line. Read in order.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/ColourStr"
}
},
"ram_colour": {
"description": "The colour of the RAM label and graph line.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"swap_colour": {
"description": "The colour of the swap label and graph line.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
}
}
},
"NetworkGraphConfig": {
"description": "Network configuration.",
"type": "object",
"properties": {
"interface_filter": {
"description": "A filter over the network interface names.",
"anyOf": [
{
"$ref": "#/$defs/IgnoreList"
},
{
"type": "null"
}
]
},
"legend_position": {
"description": "Where to place the legend for the network chart widget.",
"type": [
"string",
"null"
]
},
"show_packets": {
"description": "Displays packet rate and average packet size info.",
"type": [
"boolean",
"null"
]
},
"use_binary_prefix": {
"description": "Displays the network widget with a binary prefix (e.g. kibibits) rather than a decimal\nprefix (e.g. kilobits). Defaults to decimal prefixes.",
"type": [
"boolean",
"null"
]
},
"use_bytes": {
"description": "Displays the network widget using bytes. Defaults to bits.",
"type": [
"boolean",
"null"
]
},
"use_log": {
"description": "Displays the network widget with a log scale. Defaults to a non-log scale.",
"type": [
"boolean",
"null"
]
}
}
},
"NetworkStyle": {
"description": "Styling specific to the network widget.",
"type": "object",
"properties": {
"rx_colour": {
"description": "The colour of the RX (download) label and graph line.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"rx_total_colour": {
"description": "The colour of the total RX (download) label in basic mode.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"tx_colour": {
"description": "The colour of the TX (upload) label and graph line.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"tx_total_colour": {
"description": "The colour of the total TX (upload) label in basic mode.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
}
}
},
"ProcColumn": {
"description": "A column in the process widget.",
"type": "string",
"enum": [
"CPU%",
"Command",
"Count",
"GMem",
"GMem%",
"GPU%",
"Mem",
"Mem%",
"Memory",
"Memory%",
"Name",
"Nice",
"PID",
"Priority",
"R/s",
"Read",
"Rps",
"State",
"T.Read",
"T.Write",
"TRead",
"TWrite",
"Time",
"Total Read",
"Total Write",
"User",
"Virt",
"VirtMem",
"Virtual",
"Virtual Memory",
"W/s",
"Wps",
"Write",
"command",
"count",
"cpu%",
"gmem",
"gmem%",
"gpu%",
"mem",
"mem%",
"memory",
"memory%",
"name",
"nice",
"pid",
"priority",
"r/s",
"read",
"rps",
"state",
"t.read",
"t.write",
"time",
"total read",
"total write",
"tread",
"twrite",
"user",
"virt",
"virtmem",
"virtual",
"virtual memory",
"w/s",
"wps",
"write"
]
},
"ProcessesConfig": {
"description": "Process configuration fields.",
"type": "object",
"properties": {
"columns": {
"description": "A list of process widget columns.",
"type": "array",
"items": {
"$ref": "#/$defs/ProcColumn"
}
},
"default_sort": {
"description": "The default sort column.",
"anyOf": [
{
"$ref": "#/$defs/ProcColumn"
},
{
"type": "null"
}
]
},
"get_threads": {
"description": "Whether to get process child threads.",
"type": [
"boolean",
"null"
]
}
}
},
"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\nto have FinalWidgets as children, lest we get some amount of mutual\nrecursion between Row and Col.",
"anyOf": [
{
"$ref": "#/$defs/FinalWidget"
},
{
"type": "object",
"properties": {
"child": {
"type": "array",
"items": {
"$ref": "#/$defs/FinalWidget"
}
},
"ratio": {
"type": [
"integer",
"null"
],
"format": "uint16",
"maximum": 65535,
"minimum": 0
}
},
"required": [
"child"
]
}
]
},
"StringOrNum": {
"anyOf": [
{
"type": "string"
},
{
"type": "integer",
"format": "uint64",
"minimum": 0
}
]
},
"StyleConfig": {
"description": "Style-related configs.",
"type": "object",
"properties": {
"battery": {
"description": "Styling for the battery widget.",
"anyOf": [
{
"$ref": "#/$defs/BatteryStyle"
},
{
"type": "null"
}
]
},
"cpu": {
"description": "Styling for the CPU widget.",
"anyOf": [
{
"$ref": "#/$defs/CpuStyle"
},
{
"type": "null"
}
]
},
"graphs": {
"description": "Styling for graph widgets.",
"anyOf": [
{
"$ref": "#/$defs/GraphStyle"
},
{
"type": "null"
}
]
},
"memory": {
"description": "Styling for the memory widget.",
"anyOf": [
{
"$ref": "#/$defs/MemoryStyle"
},
{
"type": "null"
}
]
},
"network": {
"description": "Styling for the network widget.",
"anyOf": [
{
"$ref": "#/$defs/NetworkStyle"
},
{
"type": "null"
}
]
},
"tables": {
"description": "Styling for table widgets.",
"anyOf": [
{
"$ref": "#/$defs/TableStyle"
},
{
"type": "null"
}
]
},
"temp_graph": {
"description": "Styling for the temperature graph widget.",
"anyOf": [
{
"$ref": "#/$defs/TempGraphStyle"
},
{
"type": "null"
}
]
},
"theme": {
"description": "A built-in theme.\n\nIf this is and a custom colour are both set, in the config file,\nthe custom colour scheme will be prioritized first. If a theme\nis set in the command-line args, however, it will always be\nprioritized first.",
"type": [
"string",
"null"
]
},
"widgets": {
"description": "Styling for general widgets.",
"anyOf": [
{
"$ref": "#/$defs/WidgetStyle"
},
{
"type": "null"
}
]
}
}
},
"TableGap": {
"type": "string",
"enum": [
"none",
"space",
"line"
]
},
"TableStyle": {
"description": "General styling for table widgets.",
"type": "object",
"properties": {
"headers": {
"description": "Text styling for table headers.",
"anyOf": [
{
"$ref": "#/$defs/TextStyleConfig"
},
{
"type": "null"
}
]
}
}
},
"TempConfig": {
"description": "Temperature configuration.",
"type": "object",
"properties": {
"default_sort": {
"description": "The default sort column.",
"anyOf": [
{
"$ref": "#/$defs/TempWidgetColumn"
},
{
"type": "null"
}
]
},
"sensor_filter": {
"description": "A filter over the sensor names.",
"anyOf": [
{
"$ref": "#/$defs/IgnoreList"
},
{
"type": "null"
}
]
}
}
},
"TempGraphConfig": {
"description": "Temperature graph configuration.",
"type": "object",
"properties": {
"legend_position": {
"description": "The location of the graph's legend.",
"type": [
"string",
"null"
],
"default": null
},
"max_temp": {
"description": "An upper temperature value for the graph; entries higher than this will be hidden. If not set,\nthere is no limit.\n\nIs in the unit of `temperature_type`.",
"type": [
"number",
"null"
],
"format": "double",
"default": null
},
"sensor_filter": {
"description": "A filter over the sensor names.",
"anyOf": [
{
"$ref": "#/$defs/IgnoreList"
},
{
"type": "null"
}
]
}
}
},
"TempGraphStyle": {
"description": "Styling specific to the temperature graph widget.",
"type": "object",
"properties": {
"temp_graph_colour_styles": {
"description": "Colour of each temperature sensor's graph line. Read in order.",
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/ColourStr"
}
}
}
},
"TempWidgetColumn": {
"type": "string",
"enum": [
"Sensor",
"Temp",
"Temperature",
"sensor",
"temp",
"temperature"
]
},
"TextStyleConfig": {
"description": "A style for text.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "object",
"properties": {
"bg_colour": {
"description": "A built-in ANSI colour, RGB hex, or RGB colour code.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"bold": {
"description": "Whether to make this text bolded or not. If not set,\nwill default to built-in defaults.",
"type": [
"boolean",
"null"
]
},
"colour": {
"description": "A built-in ANSI colour, RGB hex, or RGB colour code.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"italics": {
"description": "Whether to make this text italicized or not. If not set,\nwill default to built-in defaults.",
"type": [
"boolean",
"null"
]
}
}
}
]
},
"WidgetBorderType": {
"type": "string",
"enum": [
"Default",
"Rounded",
"Double",
"Thick"
]
},
"WidgetStyle": {
"description": "General styling for generic widgets.",
"type": "object",
"properties": {
"bg_colour": {
"description": "Background colour for widgets.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"border_colour": {
"description": "The colour of the widgets' borders.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"disabled_text": {
"description": "Text styling for text when representing something that is disabled.",
"anyOf": [
{
"$ref": "#/$defs/TextStyleConfig"
},
{
"type": "null"
}
]
},
"selected_border_colour": {
"description": "The colour of a widget's borders when the widget is selected.",
"anyOf": [
{
"$ref": "#/$defs/ColourStr"
},
{
"type": "null"
}
]
},
"selected_text": {
"description": "Text styling for text when representing something that is selected.",
"anyOf": [
{
"$ref": "#/$defs/TextStyleConfig"
},
{
"type": "null"
}
]
},
"text": {
"description": "Text styling for text in general.",
"anyOf": [
{
"$ref": "#/$defs/TextStyleConfig"
},
{
"type": "null"
}
]
},
"thread_text": {
"description": "Text styling for text when representing process threads. Only usable\non Linux at the moment.",
"anyOf": [
{
"$ref": "#/$defs/TextStyleConfig"
},
{
"type": "null"
}
]
},
"widget_border_type": {
"description": "Widget borders type.",
"anyOf": [
{
"$ref": "#/$defs/WidgetBorderType"
},
{
"type": "null"
}
]
},
"widget_title": {
"description": "Text styling for a widget's title.",
"anyOf": [
{
"$ref": "#/$defs/TextStyleConfig"
},
{
"type": "null"
}
]
}
}
},
"row": {
"description": "Represents a row. This has a length of some sort (optional) and a vector\nof children.",
"type": "object",
"properties": {
"child": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/$defs/RowChildren"
}
},
"ratio": {
"type": [
"integer",
"null"
],
"format": "uint16",
"maximum": 65535,
"minimum": 0
}
}
}
}
}