-
-
Notifications
You must be signed in to change notification settings - Fork 277
Labgrid UI #1815
I have been working on a UI frontend for managing labgrid infrastructure a while back and was able to convince my employer to publish it as open-source under GPL-3.0 🥳
I present to you: labgrid-ui!
The repository for this application is currently hosted on my employers public git, git.duagon.com. Contributing to git.duagon.com directly is currently a bit difficult, however since it is now open-source I made a clone on my private profile which can be used as source for contributions. I am planning to sync both with each other for the forseeable future.
It is available here: https://github.com/flxzt/labgrid-ui.
For anyone that wants to build this themselves and contribute, the DEVELOPING.md document is a good starting point.
labgrid-ui provides various features:
- overview of places, details view to see all additional data and resources registered to a particular place
- list of all available resources reported by exporters
- ability to lock & unlock places
- ability to add and remove resources to/from places easily by copy&pasting resource paths
- overview of current reservations
- ability to execute scripts for commonly used tasks such as turning the power on or off for a specific place
- recipes to build a ready-to-install flatpak (done in the CI, can be downloaded as artifact)
- Translated UI elements (so far for: en-us and de-de)
- should be buildable for windows (see DEVELOPING.md) - although not very well tested
The implementation uses gRPC to communicate with the coordinator. Note that an extended protobuf schema which includes array attributes is used (open PR: #1442, I would really like to get that merged!), however in the way this is added should also be compatible with upstream/master.
The entire thing is written in Rust, I used tonic for gRPC communication, iced for the UI, fluent for translations.
Some screenshots:
labgrid-ui-tab-places labgrid-ui-tab-resources labgrid-ui-tab-scripts labgrid-ui-settingsAll reactions
Replies: 1 comment 1 reply
I like this idea. Leading up to OSS EU last year, I spent some time working on a TUI interface prototype to help users generate some exporter and client configs with reasonable defaults. This led to some discussions with other users like @moto-timo about possibly creating an interface for managing labgrid likw https://github.com/derailed/k9s, but this seems like a nice option too.
Out of curiosity, why Rust and not Python? IMO, as a labgrid user I'd want the convenience of installing the UI alongside labgrid easily, although it's not necessarily a problem that this app is written with something different.
All reactions
Obviously going with Python here would be aligned with upstream labgrid, but the software I write in Rust tends to have less bugs (once it compiles) and I personally enjoy working with Rust a lot more.
An alternative TUI client also sounds great. Just FYI: there is a test-cli and the code interfacing with the coordinator is written as a library. Maybe a starting point for additional developments..