How to design GUI interfaces in Julia?

I just began writing a Julia interface to fltk using CxxWrap.jl, more as a way to learn how to use CxxWrap.jl than anything else. I will post here the repository once I have something here.

7 Likes

I’ll have to check out your bindings for FLTK when you’re done, as I tried writing bindings for QT and quickly got lost

But why did you pick FLTK that, as found by @linwaytin, has C bindings so it will be infinitely easier to wrap it with Clang.jl?

3 Likes

I didn’t know this existed. Perhaps it is simpler. Certainly worth a look.

I like this idea, and I think we should craft a separate CI pass for that.

1 Like

I think Aqua.jl could be a good home for that. It already has a lot of checks for package best-practices.

I didn’t know that Tk.jl existed. I was able to make a simple calculator using it, but it (the looks of the gui, as well as my code) is ugly. Usable, but it is no QT.

1 Like

I think clay looks very interesting and promising as a new lightweight immediate-mode UI library without massive dependencies that could perhaps be used with something like the recently released SDL3 to build flexible, modern GUIs in Julia.

I hope someone smarter than me will eventually provide a wrapper for these C-libraries or perhaps even some nice Julian abstractions on top.

13 Likes

I totally agree. To me, immediate mode GUI libraries like Dear Imgui (combined with Clay) are definitely the way to go. I never liked QT, GTK or other bloated UIs and it’s really astonishing how much you can do with IM UIs. I use ImHex on a daily basis and it works like a charm. Super fast, low memory footprint and looks timeless :slight_smile:

For games, I love raygui.

Most of these are written in C, so using them in Julia should be easy. To be honest, the only one I have tried for Julia was CImGui.jl and also only ran some examples which worked. I did not come up with a real use-case for a Julia based GUI application in the field where I use the language, so I cannot tell more unfortunately.

5 Likes