Work / SysMon

2016-03-13 18:13:07

Configuration

The schema for the configuration file can be found here and an example configuration file can be found here.

There is currently only one property on the root object, called 'icons. This is an array of json objects - each of which describes the configuration of a notification icon.

ICONS

Each icon json object in the array has the following properties:

updateInterval Mandatory The amount of time in milliseconds between updates of the icon.
scrollAmount Mandatory The horizontal amount by which the graph moves per update interval. This must be > 0 and <= 16.
units Optional The units of measurement the value is represented in. This can be either 'Unspecified', 'Size', 'Duration' or 'Percentage'. The default is 'Unspecified'.
fixedMinimum Optional The minimum value that the maximum vertical extent of the icon can be.
fixedMaximum Optional The maximum value that the maximum vertical extent of the icon can be.
backgroundColour Optional The background colour of the icon - the default is #0000007f.
gaugeLines Optional An array of gauge line descriptions.
graphs Mandatory An array of graph descriptions.

If the units is set to 'Size', the graph will scale its vertical axis (if a fixedMaximum is not set) by a factor of 2 until the peak value is within its vertical extent. This helps provide a somewhat intuitive representation of sizes (Kb, Mb etc). If units is set to anything else, the maximum extent of the graph corresponds to the peak value directly.

There is no limit to the number of icons that can be specified in this array - system limitations/resources apply.

Graphs

A mandatory set of graphs must be defined for each icon via the graphs array. Each graph respresents a rendered graph on the containing icon. Currently this may be a line a or a bar graph. Graphs are rendered onto the icon canvas in the order they are declared in the configuration. A graph has two mandatory properties that define the input and output configurations for the graph.

The input configuration has the following properties:

type Mandatory The data source type. This can be either 'win32' or 'wmi'. The 'win32' option currently only provides phyisical memory utilsation in %.
name Optional The name of the performance counter to monitor. This must be a valid performance counter name. This is only applicable if the 'type' property is set to 'wmi'.

A set of example wmi counter names (extracted from a windows 10 machine) can be downloaded here (zipped .txt):

wmi_counters.zip

Size: 21.69 KB, Date: 2017-03-02 13:09, MD5: e05ca2918e748609539e1ad987e01bdd

The output configuration has the following properties:

renderMethod Mandatory The type of renderer to use. This can be either 'bar' or 'line'.
toolTip Optional A piece of text to label the graph (so you know what the graph is displaying).
colours Mandatory an array of colours that determines the colour for a given value in the graph.
highlight Optional A json object that describes the configuration of the highlighting logic applicable to the graph.

This json object describes how the data source is to be represented.

Colours

The colours property is an array of colour json objects that specify the colour the graph line is rendered in for a given the value.

Each colour json object has the following properties:

colour Mandatory The colour (or a blend of) that the graph line is to be rendered in.
value Mandatory The value at which the intensity of the specified colour peaks.

The colours array may contain any number of colours. If the rendered value falls between two elements in the colours array, the colours of the two neighbouring elements are blended together (based on relative distance) to reach the final colour for the graph line.

Colours are currently only determined for the endpoints of a line segment of the rendered graph - this means that if there is a significant vertical discontinuity between values, any intermediate colours specified between the colours resolved for the endpoints are not considered.

Highlighting

The highlight property is a json object that describes how the icon background is to be highlighted when the average of the visible samples approaches or exceeds a certain value.

The highlight json object has the following properties:

value Mandatory The value at which the intensity of the specified colour peaks.
colour Optional The colour to fade the background to as the value approaches or exceeds the specified value.
units Optional Determines the logic to use when determining the blend factor of the highlight colour. If units is unset, it adopts the units specified for the graph.

If units is set to 'Percentage', the background will start to fade to the specified colour after the average has exceeded the specified amount, with a blend factor of 0 when the average is <= the specified amount and 1 when the average is >= 100.

If units is set to 'Size' or 'Unspecified', the background will start to fade to the specified colour after the average has exceeded half of the specified amount, with a blend factor of 0 when the average is <= half of the specified amount and 1 when the average is >= the specified amount.

Gauge Lines

An optional set of gauge lines may be defined for each icon - these are horizontal dotted lines that visually identify certain extents on the icon. They exist to aid in quickly identifying a relative displayed value.

Gauge lines begin to fade in when they are within x2 the value of the maximum visual extent of the icon and begin to fade out when they are within the lower quarter of the icon - This is so they do not clutter the display unnecessarily.

Each gauge line json object in the array has the following properties:

colour Mandatory The colour of the gauge line.
value Mandatory The value the gauge line corresponds to.
dotPitch Optional The distance between the dots that make up the gauge line - the default is 3.