The goal of LevityDash is to create a lightweight, modular, metrics dashboard with a drag-and-drop UI for easy customization. It currently has plugins for WeatherFlow, OpenMeteo, and GoveeBLE indoor thermometers. It runs well on single-board computers such as RaspberryPi and other low-end/older computers and has been tested on Windows 10, Linux (Arch, Debian, Ubuntu, and Fedora), and macOS 13
If you want to check it out, as long as you have Python 3.10 installed, it can be downloaded and installed with
pip3 install LevityDash
and ran with
python -m LevityDash
The public verison of the website has not yet be updated, use https://docs.levityda.sh instead for now.
Installing the pre-release version
# Upgrade to the lastest pre-release version of LevityDash pip install --upgrade --extra-index-url https://repo.levityda.sh/ LevityDash
The main focus of this release is improvement to the UI/UX. Several configuration options and a few new modules have been added to support a better overall look and feel. Performance has also been improved with faster loading and threaded graph rendering.
See what's changed
- New Modules
- Titled Group
- Better text size handling
- Text styling support (experimental)
- Colors can now be specified with a hex string, a sequence of rgb/rgba values, or by web color name
- Icon/glyph support
- Metric and Imperial size support for MOST size options
- Shared/Cascading Attributes
- Unit conversion
- Removed qasync dependency
- Significantly better multithreading due to removal of qasync
- Many under-the-hood improvements
- Popover details for graphs
- Significantly faster peak calculation (around 10x)
- History time-series changes are now announced/updated
First and foremost, Text, should be more consistently sized. Text Labels can be configured with ‘matching groups’; when a label is assigned a group, it will automatically be adjusted to be consistent with the rest of the items in the group. To prevent sizing from being too restrictive, by default, subgroups are created based on label size and proximity, but it can also be set to have a consistent size for all items.
The default font weights have been reduced. On top of the weight reduction, the default title font has was changed from Nunito to Roboto. Hopefully the font weight reduction and purposeful font variation helps with the visual density and readability.
There are a few other changes related to Text, but I’ll leave that for the change log below.
Basic border support has been added. The current config options for borders are:
opacity. More options will be added over time, such as
dash-pattern and individually styled edges.
For easier consistency and faster dashboard creation, Stack grouping support has been added. Items in a stack are automatically evenly sized unless otherwise specified. Before, everything had to be laid out by hand either in the dashboard config file, which made major changes tedious, or through the UI, which made major changes difficult to keep consistent. This feature was something I had already been working on, but it was not in good enough state to be included in the last release. Stacks are currently their own item group, I don’t foresee this being the case forever, but it is the best way to implement them for now. Eventually, I would like to have ‘stack’ as a layout option for any item group along with ‘grid’ and ‘freeform’.
Physical size support has been to most size config options. Rather than pixels or percentages, sizes can be specified in metric or imperial lengths, e.g.
The next two areas of focus for the project will be adding more display types, and improving the plugin system. The gauge display module is nearly done, so it will probably be the first update but the plugin system improvements will most likely be spread across multiple updates.
Many bugs have been fixed, but I’m sure there are still some lurking around. If you find any, please let me know or submit an issue on GitHub.
A few of the config options have been renamed for consistency and clarity. As a result, dashboard files created with previous versions may be incompatible with this version.
I am also in the process of slowly refactoring the codebase to be PEP 8 compliant, so if you notice some options are camelCase and others are snake_case, that is why.
Lastly, LevityDash is intended to be more than just a weather dashboard, I would love suggestions for other data sources and display methods. I am hoping to have at least have a system stats plugin, and gauges by the next release.