QFRCDashboard
I am happy to announce the beta release of QFRCDashboard, a high-performance, low-footprint, reliable, FOSS dashboard for FRC use, written in pure Qt and C++.
QFRCDashboard has been designed from the ground up to perform well with minimal memory and CPU footprint, and to be as extensible as possible without sacrificing developer experience. Compared to Shuffleboard on a ThinkPad X220:
The tiny footprint of QFRCDashboard is thanks to a variety of factors:
- It’s written in the highly performant, lightweight C++ and Qt
- Contains no menu that subscribes to every topic at once
- Duplicate subscriptions to topics refer to the same subscription; no double-referencing topics
- Widgets only update or do any paint events when they need to, such as a resize or NT update.
Availability
QFRCDashboard is available on Linux (AppImage, system folder, binary) and Windows (portable), through GitHub Actions. QFRCDashboard has been tested on Windows, but has yet to see extensive testing. Linux builds have been tested thoroughly.
These builds currently use the master branch of WPILib, meaning that you must use this with a 2024 robot project. If there’s enough demand I will gladly create builds for 2023 WPILib.
Theming
QFRCDashboard does not support theming at the moment. By the time of the official 1.0.0 release, QFRCDashboard will receive an “official” theme, in the same vein as Qt’s Elegant Dark.
A New Take on Custom Widgets
While Shuffleboard’s custom widget plugin system was extremely powerful, it was also just as complicated for the end user. Thus, to simplify widget developer’s lives, QFRCDashboard has no plugin system. Instead, custom widgets are created directly in the code of QFRCDashboard, allowing developers complete control over the widget’s layout, type, data representation, and more. However, steps have been taken to ensure that registering a widget into the QFRCDashboard meta-system is as convenient and simple as possible.
QFRCDashboard will contain a developer’s guide for creating widgets soon.
Widgets
While not every widget from Shuffleboard is available, many have new features added, and there are some new ones.
All widgets have editable fonts for their title and, if applicable, their text–this includes font size!
- String Display
- Int & Double Displays
- Int & Double Dials
- The starting angle of the dials are now configurable, as is the range.
- Note that a 0 starting angle is the bottom.
- Boolean Color Display
- Added support for changing to various preset shapes. (Hexagon, Rectangle, Triangle, Circle)
- Boolean Checkbox
- The checkbox size is editable.
- Camera View
- This lacks support for getting views from CameraServer, this will be added soon.
- Field2d
- Supports built-in images and even custom field images!
- Editable robot size
- Sendable Chooser
- Enum Widget
- A completely new widget. This widget takes in a string, and changes its color depending on the string.
- All key-value (string-color) pairs are editable.
- Like the boolean color widget, the shape is editable.
Coming soon will be:
- Graphs
- CSV Export
- Configurable axes
- Multiple lines and values
- Static values in the graph
- Configurable colors
- FMSInfo
- Command Activation
- Distinction between toggle and instant commands.
- This is a high priority right now, expect this by beta 5.
- Swerve Widget
- Drag & Drop
- This is a high priority right now, expect this by beta 5.