$schema: "http://json-schema.org/draft-07/schema#" description: over-engineered conky schema required: [modules, layout] additionalProperties: false properties: bootstrap: required: [update_interval, dimensions] additionalProperties: false properties: update_interval: description: the update interval (seconds) type: number dimensions: description: the max width/height of the conky window type: array minItems: 2 maxItems: 2 items: type: integer minimum: 1 # NOTE none of these are required modules: additionalProperties: false properties: filesystem: required: [show_smart, fs_paths] additionalProperties: false properties: show_smart: description: show the smart deamon indicator type: boolean fs_paths: description: the filesystem paths for which usage should be shown type: array minItems: 1 items: type: object required: [name, path] additionalProperties: false properties: name: type: string path: type: string graphics: required: [show_temp, show_clock, show_gpu_util, show_mem_util, show_vid_util] additionalProperties: false properties: dev_power: description: the sysfs path to the graphics card power indicator type: string show_temp: description: show the GPU temp type: boolean show_clock: description: show the GPU clock speeds type: boolean show_gpu_util: description: show the GPU utilization plot type: boolean show_mem_util: description: show the GPU memory utilization plot type: boolean show_vid_util: description: show the GPU video utilization plot type: boolean memory: required: [show_stats, show_plot, table_rows] additionalProperties: false properties: show_stats: description: show memory stats/dial type: boolean show_swap: description: show swap dial type: boolean show_plot: description: show the RAM utilization plot type: boolean table_rows: &table descrition: the number of rows in the table (0 for no table) type: integer minimum: 0 power: required: [battery, rapl_specs] additionalProperties: false properties: battery: description: the battery device to use (or blank if none) type: string rapl_specs: description: the Intel RAPL specs for which plots should be made type: array items: type: object required: [name, address] additionalProperties: false properties: name: type: string address: type: string processor: required: [core_rows, show_stats, show_plot, table_rows] additionalProperties: false properties: core_rows: description: the number of rows over which to show discrete cores type: integer minimum: 0 core_padding: description: horizontal padding to apply to the core layout type: integer minimum: 0 show_stats: description: show frequency/HWP stats type: boolean show_plot: description: show CPU utilization plot type: boolean table_rows: *table readwrite: required: [devices] additionalProperties: false properties: devices: description: the devices to include in I/O summations type: array minItems: 1 items: type: string layout: required: [anchor, panels] additionalProperties: false properties: anchor: description: the coordinates of the upper-left corner to anchor the app type: array minItems: 2 maxItems: 2 items: type: integer panels: description: either a panel (object) or padding between panels (int) type: array items: anyOf: - type: integer minimum: 0 - type: object description: layout for a single panel required: [columns, margins] additionalProperties: false properties: margins: type: array minItems: 2 maxItems: 2 items: type: integer columns: description: | either the columns in this panel (object) or padding between columns (int) type: array minItems: 1 items: anyOf: - type: integer minimum: 0 - type: object required: [blocks, width] additionalProperties: false properties: width: description: the width of all modules in this column type: integer minimum: 0 blocks: description: | either a module name (string) or padding (int) type: array minItems: 1 items: anyOf: - type: integer minimum: 0 - type: string pattern: "^system|graphics|processor|readwrite|\ network|pacman|filesystem|power|memory$" theme: required: [font, geometry, patterns] additionalProperties: false properties: font: required: [family, sizes] additionalProperties: false properties: family: type: string sizes: required: [normal, plot_label, table, header] additionalProperties: false properties: normal: &font_size type: integer minimum: 5 plot_label: *font_size table: *font_size header: *font_size geometry: required: [plot, table] additionalProperties: false properties: plot: required: [seconds, ticks] additionalProperties: false properties: seconds: description: the number of seconds on each timeseries plot type: integer minimum: 30 ticks: description: the number of ticks on the x/y axes type: array minItems: 2 maxItems: 2 items: type: integer minimum: 2 table: required: [name_chars, padding, header_padding] additionalProperties: false properties: name_chars: description: | the length to which the name column should be trimmed (if any) type: integer minimum: 0 padding: description: the x/y padding around the table type: array minItems: 2 maxItems: 2 items: type: integer minimum: 0 header_padding: description: the padding beneath the column headers type: integer minimum: 0 row_spacing: description: the distance between the center of each row type: integer minimum: 10 header: required: [underline_offset, padding] additionalProperties: false properties: underline_offset: description: the offset of the underline (from top of header) type: integer minimum: 10 padding: description: the padding beneath the underline type: integer minimum: 0 patterns: required: [header, panel, text, border, plot, indicator] additionalProperties: false properties: header: &pattern oneOf: - type: integer - type: object oneOf: - required: [color, alpha] - required: [gradient] - required: [gradient_alpha] properties: color: type: integer maximum: 0xffffff alpha: &alpha type: number minimum: 0 maximum: 1 gradient: type: array minItems: 2 items: type: object required: [stop, color] additionalProperties: false properties: &gradient stop: type: number minimum: 0 maximum: 1 color: type: integer maximum: 0xffffff gradient_alpha: type: array minItems: 2 items: type: object required: [stop, color, alpha] additionalProperties: false properties: <<: *gradient alpha: *alpha panel: required: [bg] additionalProperties: false properties: bg: *pattern text: required: [active, inactive, critical] additionalProperties: false properties: active: *pattern inactive: *pattern critical: *pattern border: *pattern plot: required: [grid, outline, data] additionalProperties: false properties: grid: *pattern outline: *pattern data: required: [border, fill] additionalProperties: false properties: border: *pattern fill: *pattern indicator: required: [bg, fg] additionalProperties: false properties: bg: *pattern fg: required: [active, critical] additionalProperties: false properties: active: *pattern critical: *pattern