Considering KDE technologies for my complex Rust app

Hello! I’ve been developing an open source DAW (Digital Audio Workstation) project in Rust for a few years now. I’ve been using the Vizia GUI library https://github.com/vizia/vizia and have gotten some progress on it, but I want to experiment with other options before I get too far with it. While Vizia is ok, it would be nice to use something more battle tested and feature complete.

I’m a user of the KDE Plasma desktop and love it, and I’ve been looking at the KDE Human Interface Guidelines for some inspiration on how to make my UI more user friendly and consistent. Then I saw that QtQuick and Kirigami supports hardware-accelerated rendering and declarative UI design, and apparently Kirigami supports Rust too!

So before I try it, I have some questions about it:

  1. Does QtQuick/Kirigami support Mac and Windows?
  2. How well do custom GPU shaders work? This is pretty paramount to rendering things like realtime waveforms and spectrogram visualizers. Are shaders part of the Qt rendering pipeline and can they be attached to widgets, or is it just drawing a Qt interface on top of an OpenGL context?
  3. Are there any performance problems with QtQuick/Kirigami in large complicated applications?
  4. How efficient is the rendering? I am going to have visualizers and decibel meters updating every frame, so it needs to be fast and efficient.
  5. What is the experience of creating custom widgets in QtQuick/Kirigami? I’m going to need to create quite a few custom widgets like knobs, sliders, and of course visualizers.
1 Like

Yes.

How well do custom GPU shaders work? This is pretty paramount to rendering things like realtime waveforms and spectrogram visualizers. Are shaders part of the Qt rendering pipeline and can they be attached to widgets, or is it just drawing a Qt interface on top of an OpenGL context?

Qt allows to supply custom shaders, see ShaderEffect QML Type | Qt Quick | Qt 6.9.1

Are there any performance problems with QtQuick/Kirigami in large complicated applications?

That’s hard to answer generally since it depends on what your UI contains, how it’s structured, etc.

How efficient is the rendering? I am going to have visualizers and decibel meters updating every frame, so it needs to be fast and efficient.

Also hard to answer generally, but it’s certainly possible to write complex and performant custom items

What is the experience of creating custom widgets in QtQuick/Kirigami? I’m going to need to create quite a few custom widgets like knobs, sliders, and of course visualizers.

There’s several different layers where this can be done. The most direct way is just combining several QML items into a custom component. It’s also possible to do more elaborate stuff using QQuickPaintedItem and QPainer (with CPU-based rendering), or hardware-accelerated custom items based on custom scene graph nodes/materials.

1 Like

Thanks for your input! Glad to hear that it at least seems possible to do what I want. I’ll do some experimenting and see how it goes.

I will say I’m really digging the Human Interface Guidelines and all of KDE’s built in widgets to achieve it! :grin:

2 Likes

Nice, let us know how it goes! We have a matrix group is you’d like to join in case you have more doubts or just hang out.

1 Like