Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/federicoceratto/dashing
Terminal dashboards for Python
https://github.com/federicoceratto/dashing
charts dashboard gauges python python3 terminal terminal-based
Last synced: 23 days ago
JSON representation
Terminal dashboards for Python
- Host: GitHub
- URL: https://github.com/federicoceratto/dashing
- Owner: FedericoCeratto
- Created: 2017-06-03T12:55:18.000Z (over 7 years ago)
- Default Branch: main
- Last Pushed: 2024-05-14T09:40:26.000Z (6 months ago)
- Last Synced: 2024-10-01T21:09:19.959Z (about 1 month ago)
- Topics: charts, dashboard, gauges, python, python3, terminal, terminal-based
- Language: Python
- Homepage: https://dashing.readthedocs.io/en/latest/
- Size: 119 KB
- Stars: 430
- Watchers: 10
- Forks: 34
- Open Issues: 12
-
Metadata Files:
- Readme: README.adoc
- License: LICENSES/LGPL-3.0-or-later.txt
Awesome Lists containing this project
README
image:https://img.shields.io/badge/status-alpha-orange.svg[badge]
image:https://img.shields.io/badge/version-0.1.0-orange.svg[badge]
image:https://img.shields.io/pypi/v/dashing.svg?style=plastic["Latest Version", link="https://pypi.python.org/pypi/dashing"]
image:https://img.shields.io/badge/License-LGPL%20v3-blue.svg[License]
image:https://api.reuse.software/badge/github.com/FedericoCeratto/dashing[REUSE,link="https://api.reuse.software/info/github.com/FedericoCeratto/dashing"]Dashing is a library to quickly create terminal-based dashboards in Python.
image:https://raw.githubusercontent.com/FedericoCeratto/dashing/gh-pages/tty.gif[Example]
Similar libraries for other languages: https://github.com/gizak/termui[termui] https://github.com/chjj/blessed[blessed] https://github.com/yaronn/blessed-contrib[blessed-contrib]
Features:
- [x] Sub-character resolution (partially filled blocks)
- [x] Horizontal and vertical bars with gradient coloring
- [x] Text and log panes with automated scrolling
- [x] Automatic scaling of all elements
- [x] Vertical and horizontal tile splitting
- [x] Braille-filled charts
- [x] Theming with 24-bit RGB and HSV colors
- [x] Color gradients=== Dependencies
The link:https://pypi.python.org/pypi/blessed[blessed] library.
=== Installation
Use packages from your Linux distribution, or:
[source,bash]
----
pip install dashing
----=== Usage
See the documentation at https://dashing.readthedocs.io/en/latest/
.Usage
[source,python]
----
import math
from time import time, sleepfrom dashing import (
ColorRangeVGauge,
HBrailleChart,
HChart,
HGauge,
HSplit,
Log,
Text,
VChart,
VGauge,
VSplit,
)if __name__ == '__main__':
ui = HSplit(
VSplit(
HGauge(val=50, title="only title", border_color=5),
HGauge(label="only label", val=20, border_color=5),
HGauge(label="only label", val=30, border_color=5),
HGauge(label="only label", val=50, border_color=5),
HGauge(label="only label", val=80, border_color=5),
HGauge(val=20),
HGauge(label="label, no border", val=55),
HSplit(
VGauge(val=0, border_color=2),
VGauge(val=5, border_color=2),
VGauge(val=30, border_color=2),
VGauge(val=50, border_color=2),
VGauge(val=80, border_color=2, color=4),
VGauge(val=95, border_color=2, color=3),
ColorRangeVGauge(
val=100,
border_color=2,
colormap=(
(33, 2),
(66, 3),
(100, 1),
)
),
)
),
VSplit(
Text('Hello World,\nthis is dashing.', border_color=2),
Log(title='logs', border_color=5),
VChart(border_color=2, color=2),
HChart(border_color=2, color=2),
HBrailleChart(border_color=2, color=2),
# HBrailleFilledChart(border_color=2, color=2),
),
title='Dashing',
)
log = ui.items[1].items[1]
vchart = ui.items[1].items[2]
hchart = ui.items[1].items[3]
bchart = ui.items[1].items[4]
# bfchart = ui.items[1].items[5]
log.append("0 -----")
log.append("1 Hello")
log.append("2 -----")
prev_time = time()with open_terminal() as terminal:
for cycle in range(0, 200):
ui.items[0].items[0].value = int(50 + 49.9 * math.sin(cycle / 80.0))
ui.items[0].items[1].value = int(50 + 45 * math.sin(cycle / 20.0))
ui.items[0].items[2].value = int(50 + 45 * math.sin(cycle / 30.0 + 3))vgauges = ui.items[0].items[-1].items
for gaugenum, vg in enumerate(vgauges):
vg.value = 50 + 49.9 * math.sin(cycle / 12.0 + gaugenum)t = int(time())
if t != prev_time:
log.append("%s" % t)
prev_time = t
vchart.append(50 + 50 * math.sin(cycle / 16.0))
hchart.append(99.9 * abs(math.sin(cycle / 26.0)))
bchart.append(50 + 50 * math.sin(cycle / 6.0))
# bfchart.append(50 + 50 * math.sin(cycle / 16.0))ui.display(terminal)
sleep(1.0 / 25)
----