diff --git a/docs/widgets.md b/docs/widgets.md
index 74f3b349..99f2af6f 100644
--- a/docs/widgets.md
+++ b/docs/widgets.md
@@ -7,7 +7,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
> Adding / editing widgets through the UI isn't yet supported, you will need to do this in the YAML config file.
##### Contents
-- [General Widgets](#general-widgets)
+- **[General Widgets](#general-widgets)**
- [Clock](#clock)
- [Weather](#weather)
- [Weather Forecast](#weather-forecast)
@@ -32,7 +32,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [GitHub Trending](#github-trending)
- [GitHub Profile Stats](#github-profile-stats)
- [Public IP Address](#public-ip)
-- [Self-Hosted Services Widgets](#self-hosted-services-widgets)
+- **[Self-Hosted Services Widgets](#self-hosted-services-widgets)**
- [System Info](#system-info)
- [Cron Monitoring](#cron-monitoring-health-checks)
- [CPU History](#cpu-history-netdata)
@@ -42,7 +42,7 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [Pi Hole Queries](#pi-hole-queries)
- [Recent Traffic](#recent-traffic)
- [Stat Ping Statuses](#stat-ping-statuses)
-- [System Resource Monitoring](#system-resource-monitoring)
+- **[System Resource Monitoring](#system-resource-monitoring)**
- [CPU Usage Current](#current-cpu-usage)
- [CPU Usage Per Core](#cpu-usage-per-core)
- [CPU Usage History](#cpu-usage-history)
@@ -50,16 +50,20 @@ Dashy has support for displaying dynamic content in the form of widgets. There a
- [Memory Usage History](#memory-usage-history)
- [Disk Space](#disk-space)
- [Disk IO](#disk-io)
-- [Dynamic Widgets](#dynamic-widgets)
+ - [System Load](#system-load)
+ - [System Load History](#system-load-history)
+- **[Dynamic Widgets](#dynamic-widgets)**
- [Iframe Widget](#iframe-widget)
- [HTML Embed Widget](#html-embedded-widget)
- [API Response](#api-response)
- [Prometheus Data](#prometheus-data)
- [Data Feed](#data-feed)
-- [Usage & Customizations](#usage--customizations)
+- **[Usage & Customizations](#usage--customizations)**
- [Widget Usage Guide](#widget-usage-guide)
- [Continuous Updates](#continuous-updates)
+ - [Proxying Requests](#proxying-requests)
- [Custom CSS Styling](#widget-styling)
+ - [Customizing Charts](#customizing-charts)
- [Language Translations](#language-translations)
- [Widget UI Options](#widget-ui-options)
- [Building a Widget](#build-your-own-widget)
@@ -1168,7 +1172,9 @@ The easiest method for displaying system info and resource usage in Dashy is wit
Glances is a cross-platform monitoring tool developed by [@nicolargo](https://github.com/nicolargo). It's similar to top/htop but with a [Rest API](https://glances.readthedocs.io/en/latest/api.html) and many [data exporters](https://glances.readthedocs.io/en/latest/gw/index.html) available. Under the hood, it uses [psutil](https://github.com/giampaolo/psutil) for retrieving system info.
-If you don't already have it installed, either follow the [Installation Guide](https://github.com/nicolargo/glances/blob/master/README.rst) for your system, or setup [with Docker](https://glances.readthedocs.io/en/latest/docker.html), or use the one-line install script: `curl -L https://bit.ly/glances | /bin/bash`. You'll need to run Glances as a web server, using the `-w` option, see the [command reference docs](https://glances.readthedocs.io/en/latest/cmds.html) for more info.
+If you don't already have it installed, either follow the [Installation Guide](https://github.com/nicolargo/glances/blob/master/README.rst) for your system, or setup [with Docker](https://glances.readthedocs.io/en/latest/docker.html), or use the one-line install script: `curl -L https://bit.ly/glances | /bin/bash`.
+
+Glances can be launched with the `glances` command. You'll need to run it in web server mode, using the `-w` option for the API to be reachable. If you don't plan on using the Web UI, then you can disable it using `--disable-webui`. See the [command reference docs](https://glances.readthedocs.io/en/latest/cmds.html) for more info.
##### Options
@@ -1316,6 +1322,38 @@ Shows real-time read and write speeds and operations per sec for each disk
---
+### System Load
+
+Shows the number of processes waiting in the run-queue, averaged across all cores. Displays for past 5, 10 and 15 minutes
+
+

+
+##### Example
+
+```yaml
+- type: gl-system-load
+ options:
+ hostname: http://192.168.130.2:61208
+```
+
+---
+
+### System Load History
+
+Shows recent historical system load, calculated from the number of processes waiting in the run-queue, in 1, 5 and 15 minute intervals, and averaged across all cores. Optionally specify `limit` to set number of results returned, defaults to `500`, max `100000`, but the higher the number the longer the load and render times will be.
+
+
+
+##### Example
+
+```yaml
+- type: gl-load-history
+ options:
+ hostname: http://192.168.130.2:61208
+```
+
+---
+
## Dynamic Widgets
### Iframe Widget
@@ -1465,19 +1503,6 @@ Note that if you have many widgets, and set them to continuously update frequent
---
-### Widget Styling
-
-Like elsewhere in Dashy, all colours can be easily modified with CSS variables.
-
-Widgets use the following color variables, which can be overridden if desired:
-- `--widget-text-color` - Text color, defaults to `--primary`
-- `--widget-background-color` - Background color, defaults to `--background-darker`
-- `--widget-accent-color` - Accent color, defaults to `--background`
-
-For more info on how to apply custom variables, see the [Theming Docs](/docs/theming.md#setting-custom-css-in-the-ui)
-
----
-
### Proxying Requests
If a widget fails to make a data request, and the console shows a CORS error, this means the server is blocking client-side requests.
@@ -1503,6 +1528,33 @@ Vary: Origin
---
+### Widget Styling
+
+Like elsewhere in Dashy, all colours can be easily modified with CSS variables.
+
+Widgets use the following color variables, which can be overridden if desired:
+- `--widget-text-color` - Text color, defaults to `--primary`
+- `--widget-background-color` - Background color, defaults to `--background-darker`
+- `--widget-accent-color` - Accent color, defaults to `--background`
+
+For more info on how to apply custom variables, see the [Theming Docs](/docs/theming.md#setting-custom-css-in-the-ui)
+
+---
+
+### Customizing Charts
+
+For widgets that contain charts, you can set an array of colors under `chartColors`. To specify the chart height, set `chartHeight` to an integer (in `px`), defaults to `300`. For example:
+
+```yaml
+- type: gl-load-history
+ options:
+ hostname: http://192.168.130.2:61208
+ chartColors: ['#9b5de5', '#f15bb5', '#00bbf9', '#00f5d4']
+ chartHeight: 450
+```
+
+---
+
### Language Translations
Since most of the content displayed within widgets is fetched from an external API, unless that API supports multiple languages, translating dynamic content is not possible.
@@ -1531,7 +1583,7 @@ Widgets are built in a modular fashion, making it easy for anyone to create thei
For a full tutorial on creating your own widget, you can follow [this guide](/docs/development-guides.md#building-a-widget), or take a look at [here](https://github.com/Lissy93/dashy/commit/3da76ce2999f57f76a97454c0276301e39957b8e) for a code example.
-Alternatively, for displaying simple data, you could also just use the either the [iframe](#iframe-widget), [embed](#html-embedded-widget), [Data Feed](#data-feed) or [API response](#api-response) widgets.
+Alternatively, for displaying simple data, you could also just use the either the [iframe](#iframe-widget), [embed](#html-embedded-widget), [data feed](#data-feed) or [API response](#api-response) widgets.
---
diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json
index dc5c5e99..58eeaa3b 100644
--- a/src/assets/locales/en.json
+++ b/src/assets/locales/en.json
@@ -273,7 +273,10 @@
"disk-space-free": "Free",
"disk-space-used": "Used",
"disk-mount-point": "Mount Point",
- "disk-file-system": "File System"
+ "disk-file-system": "File System",
+ "disk-io-read": "Read",
+ "disk-io-write": "Write",
+ "system-load-desc": "Number of processes waiting in the run-queue, averaged across all cores"
},
"system-info": {
"uptime": "Uptime"
diff --git a/src/components/Widgets/GlDiskIo.vue b/src/components/Widgets/GlDiskIo.vue
index 75c1ab79..b7417241 100644
--- a/src/components/Widgets/GlDiskIo.vue
+++ b/src/components/Widgets/GlDiskIo.vue
@@ -4,13 +4,13 @@
{{ disk.name }}
- Read:
+ {{ $t('widgets.glances.disk-io-read') }}:
{{ disk.readB | formatSize }}
{{ disk.readD | getArrow }}
- Write:
+ {{ $t('widgets.glances.disk-io-write') }}:
{{ disk.writeB | formatSize }}
{{ disk.writeD | getArrow }}
diff --git a/src/components/Widgets/GlLoadHistory.vue b/src/components/Widgets/GlLoadHistory.vue
new file mode 100644
index 00000000..4584bc98
--- /dev/null
+++ b/src/components/Widgets/GlLoadHistory.vue
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
diff --git a/src/components/Widgets/GlSystemLoad.vue b/src/components/Widgets/GlSystemLoad.vue
new file mode 100644
index 00000000..1b937bc9
--- /dev/null
+++ b/src/components/Widgets/GlSystemLoad.vue
@@ -0,0 +1,68 @@
+
+
+
+
+
+
+
diff --git a/src/components/Widgets/WidgetBase.vue b/src/components/Widgets/WidgetBase.vue
index 25611792..b500b16d 100644
--- a/src/components/Widgets/WidgetBase.vue
+++ b/src/components/Widgets/WidgetBase.vue
@@ -144,6 +144,13 @@
@error="handleError"
:ref="widgetRef"
/>
+
+
import('@/components/Widgets/GlCpuHistory.vue'),
GlDiskIo: () => import('@/components/Widgets/GlDiskIo.vue'),
GlDiskSpace: () => import('@/components/Widgets/GlDiskSpace.vue'),
+ GlLoadHistory: () => import('@/components/Widgets/GlLoadHistory.vue'),
GlMemGauge: () => import('@/components/Widgets/GlMemGauge.vue'),
GlMemHistory: () => import('@/components/Widgets/GlMemHistory.vue'),
+ GlSystemLoad: () => import('@/components/Widgets/GlSystemLoad.vue'),
HealthChecks: () => import('@/components/Widgets/HealthChecks.vue'),
IframeWidget: () => import('@/components/Widgets/IframeWidget.vue'),
Jokes: () => import('@/components/Widgets/Jokes.vue'),