Deciding what UI toolkit I should use for my DAW

Hello! I’m currently exploring what options are available to create the UI frontend for my open source Meadowlark DAW project: GitHub - MeadowlarkDAW/Meadowlark: A (currently incomplete) open-source Digital Audio Workstation, made by musicians, for musicians

All the backend code is pure Rust (most of it is currently in this repo: GitHub - MeadowlarkDAW/dropseed: A modular DAW (Digital Audio Workstation) engine written in Rust). While my original plan was to use a native Rust UI library for the frontend, I’m not sure that’s the best course of action anymore, and I’m exploring alternatives.

All the mature rust-native UI libraries don’t scale well in terms of performance. There are some libraries with better performance scaling, but they are experimental and not production ready yet. I also don’t want to use web tech for my frontend, just no.

Obviously people here will be biased towards GTK4, but I want to make sure that it will work well for my use case, or if I should look into something like QT or even JUCE (although I would prefer to avoid JUCE since I’m trying to create my own fully open source audio ecosystem here).

My first question (and my main concern) with GTK4 is how well it currently works in the latest versions of MacOS? This being a music production application, supporting Mac is important for me.

My second question is what options are there to optimize the rendering of complex custom widgets? The timeline in a complex project for example could get quite expensive if I have to do a full repaint every frame. Does GTK4 have stuff like layers and/or draw regions? I saw a blog saying that GTK4 has “GPU accelerated scrolling”, is that something I can take advantage of with custom widgets?

Third, is GTK4 fully themeable/will it stay fully themeable in future updates? The design needs of a DAW is very different from the design needs of a more typical desktop application, so I don’t want to be locked in in terms of theming flexibility. I also want my users to be able to create and distribute custom themes for Meadowlark.

And fourth, how well do the Rust bindings to GTK4 work in practice? Is there any limitations I should be aware of? I could write the frontend in C++ if I needed to, but of course being able to use Rust is a big plus for me. This is also the main reason why I want to try GTK4 over QT (Rust QT bindings look like a nightmare).

I can’t answer all your questions because I don’t really do UI development, but

is GTK4 fully themeable […]

Take a look at Zrythm - Digital Audio Workstation for a similar kind of application. That UI is written with GTK4 and full of custom widgets and custom theming. That probably also somewhat answers your second question.

how well do the Rust bindings to GTK4 work in practice […]

They’re complete and if something happens to be missing that’s going to be easy to add :slight_smile: I’m not aware of any limitations compared to using GTK from C.

Take a look at Zrythm - Digital Audio Workstation for a similar kind of application. That UI is written with GTK4 and full of custom widgets and custom theming. That probably also somewhat answers your second question.

Oh nice, i didn’t realize ZRythm uses GTK4. That answers most of my questions then (considering ZRythm is also a DAW with a bunch of complex custom widgets and is cross-platform). GTK4 seems like a powerful library, can’t wait to try it out!

1 Like

Feel free to come to the Rust/GNOME Matrix channel if you have any questions about gtk-rs :slight_smile:

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.