dashing icon indicating copy to clipboard operation
dashing copied to clipboard

Terminal dashboards for Python

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]

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]

=== 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]

from time import sleep, time import math

from dashing import *

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()
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()

    sleep(1.0/25)