A modern Qt6-based dashboard application. Part of a larger project to create an embedded Linux distribution that will run on custom hardware. The goal is to have a hackable digital dash for vehicles that people can use out of the box with a high amount of customization, or get their hands dirty and extend it to add whatever functionality they desire.
All the gauges are drawn/rendered, no static images. A YAML configuration file controls:
- the composition of which widgets are shown and where.
- Widget specific configurations, such as max RPM or where shift points are shown.
- Data sources for each element within the widget.
Zenoh is used for pub/sub, and capnproto is used for serialization. The widgets additionally have a flexible "expression parser" to where a user can specify a capnproto signal and any math expression to be used for the data source for a widget.
For the examples shown below, they are all the same dashboard binary, only different YAML configurations. Multiple windows (displays) can also be supported in the same single configuration - for example, you can have one display be your instrument cluster, the other be a CarPlay window.
With additional "sparklines" widget on the right.

Requires a CarlinKit dongle such as CPC200-CCPA

A very much work-in-progress dashboard editor is being pieced together. This is a GUI to be able to drag and drop widgets into a dashboard.
Work in progress, see dashboard-docs.
- Qt6: Core, Widgets, Multimedia, MultimediaWidgets, and Svg modules
- FFmpeg
- CMake: Version 3.10 or higher
- C++ Compiler: Supporting C++23 standard
# Install Qt6 via Homebrew
brew install qt@6-
Create build directory:
mkdir build cd build -
Configure the project:
cmake ..
For debug builds:
cmake -DCMAKE_BUILD_TYPE=Debug ..
-
Build the application:
make -j$(nproc) -
Run the application:
./dashboard/dashboard -c <path_to_config>
-c: Path to YAML configuration file (see config directory for examples)--debug: Enable debug logging--libusb_debug: Enable LibUSB debugging logging
The following libraries are fetched as part of a CMake step. For complete license information, see the individual license files in the resulting build/licenses/ directory. Patches (where applicable) are also available in the source directory under the patches directory, and also copied out to the build/licenses directory.
| Library | Version | License | Purpose | Patched |
|---|---|---|---|---|
| Qt6 | 6.x | LGPL v3 / Commercial | GUI framework and multimedia support | N |
| spdlog | 1.15.3 | MIT | Fast C++ logging library | Y |
| nlohmann/json | 3.12.0 | MIT | JSON parsing and serialization | N |
| yaml-cpp | 0.8.0 | MIT | YAML configuration file parsing | N |
| cxxopts | 3.3.1 | MIT | Command line argument parsing | N |
| capnproto | 6846dff | MIT | Binary serialization and RPC framework | N |
| libusb-cmake | 1.0.27 | LGPL v2.1+ | USB device communication | N |
| zenoh-cpp | 1.4.0 | EPL-2.0 / Apache-2.0 | Zero overhead pub/sub messaging | N |
| hidapi | 0.15.0 | GPL3 | HID library | N |
| exprtk | 245c0d5 | MIT | Mathematical expression parsing and evaluation | Y |
See COPYING for license information.


