LevityDash v0.2.0b1 - UI/UX Update


A lightweight, desktop native, multi-source dashboard for macOS, Windows, and Linux

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

You can find more information about the project at levitydash.app or at the GitHub repo.

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

Current Version: v0.2.0b1 - UI/UX Update

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

TLDR Change Log

  • New Modules
    • Mini-Graph
    • Stack
    • 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
  • Borders
  • 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

UI Updates Summary


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: edges, weight, color, length, offset, and 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 Sizes

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. in, cm, mm.

What’s Next

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.

Other Notes

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.

Previous Versions



The fonts look like a ransom note. Just kidding :slight_smile:
Always nice to see more apps !

Really nice. Just a bit cluttered. If possible to get some lines between the sections (even fine). As is I tend to slide off to the next part and then ours … back :slight_smile:
Will play with it soon

1 Like

You know, now that you mention it, it is way over crowded, especially for a default configuration. Borders/dividers are on my list of features to implement, but weren’t personally that high on my list. I’ll bump it up in the list and I might be able to get something basic working fairly soon. Thanks for the suggestion!

The graph looks really nice, I like the blending gradient on the temperature lines. My only critique, other than what eric pointed out is to pick only a couple font sizes and stick to those. It adds to the “cluttered” feeling when there are 10+ different sizes, especially when they represent the same thing. Since it’s a really text heavy display it gets a little overwhelming when there are so many different label sizes.

Nice job though, going to give it a try tonight.

1 Like

Text size is currently ‘largest that fits’ since that was the easiest to implement with everything being resizable and the content being unpredictable since it is user editable. Fixed label sizes is yet another feature on the list.

It’s definitely text heavy, I have some other non-text display modules that are mostly functioning, but they don’t quite have the level of customization I want for them to be included so they were shelved for the initial release.


Hey everyone, Happy Holidays!

I’m back with a very long overdue update!

I’ve still got quite a bit of cleaning up with the UI/UX, documentation to write, and a few of bugs to address before I can release it. But before I do, I wanted to get feedback on the current progress, as I believe I have addressed all the issues mentioned previously.

There is one major breaking change, dashboard layouts from previous versions may not be compatible. The schema for dashboard configuration is not finalized, so this could end up being a continuing issue until it is. I have some ideas of ways to make it less of an issue and make loading/saving significantly faster, but it might not get incorporated right away.


Use the flag --reset-config to completely reset your user config. Alternatively, you can set the environment variable LEVITYDASH_CONFIG_DEBUG to 1 which will make LevityDash run with the default options in a fresh temporary directory.

I also mostly have compiling to an executable working. It’s very experimental, and not recommended, but it does function and a lot easier than dealing with Python versions and package dependencies. I will have Windows and macOS versions for x86_64 up soon, and hopefully Linux versions for both x86_64 and ARM later in the week.

Finally, I’ve had to step away from the project for a little while a few times, so I am sure there are other changes that I’ve since forgotten. I will continue to add to the main post as I remember or rediscover any important missing changes.

You can find the most up-to-date version of the documentation here: https://docs.levityda.sh/.

The full changelog along with experimental compiled releases can be found on GitHub here.

I have not published it to PyPI yet, but you can download the pre-release with pip by using the --extra-index-url flag.

# Upgrade to the lastest pre-release version of LevityDash
python3.10 -m pip install --user --upgrade --extra-index-url https://repo.levityda.sh/ LevityDash

Once again, I look forward to hearing everyone’s thoughts!


1 Like