Are we gui yet?

Hi,

I am currently looking for package options to create applications for internal clients.
What I would really need is :

  • easy to use (documented package would be nice)
  • widgets (file pickers, sliders…)
  • Plots.jl (scatter, plots, histogram mostly)
  • Package still being maintained

Here is the list of options I have tried so far and why these :

  • Pluto & PlutoUI => very nice but clients can (and will) find hidden code and I need more configurable layouts (especially widgets and plots)
  • GTK.jl and glade (gui builder) => easy, lightweight, but GR.jl resists me (figsize, colors etc…)
  • Blink.jl, this package would tick all the boxes but it does not seems to be maintained anymore?
  • Genie.jl, tried it 2-3 years ago (and a lot of development has been done since) but is probably overkill for what I need. That, and my skills in web development are… negligible.

Don’t get me wrong, these are all great packages but I can’t seem the find the one that fits all (if it even exists).

Would you know of a package/framework that would fit the bill?

Thanks in advance!

3 Likes

I suggest Makie.jl

  • It has a good documentation: Home
  • It has widgets (see e.g. SliderGrid I’m unsure about file picker though.)
  • It supports plots :wink:
  • Package is well maintained.
2 Likes

Combining Plots.jl and/or GR.jl with QML.jl should provide all of that. Unfortunately QML.jl is not available on all platforms for Julia 1.8.

2 Likes

Great!
I’ll give it a shot over the next two days and see if I can get something usable.
Cheers

Another option is to use e.g. Electron for the frontend (GUI in html + javascript), and Julia on the backend. There are many interactive javascript plotting libraries, like plotly.

There’s a no-code option now, from Genie. Announcing Genie Builder, a no-code plugin to quickly build web GUIs & dashboards

3 Likes

I think Electron is overkill most of the times it is used, just use a local Web server and then the user can open the page in their favorite browser.

Here is a GUI example using CImGui and ImPlot:

Then you need to compile an app from your project to ship it (didn’t check it for a while).

2 Likes

I came across this one too but was turned off by the scarcer commits (using the contributors as metrics)…

For a light weight app, i did consider using HTTP.jl as base. Is that what you are referring to?
If so, would you have a MWE to share?
I am not a web developer by any means but I would be willing to improve.

I would have to look further into that !! Didn’t consider that option. Cheers!

I think you misunderstand the sate of the project and what it actually is.

CImGui.jl and ImPlot.jl are just convenience wrappers around LibCImGui.jl autognerated wrapper around cimgui and cimplot autogenerated c-library wrappers around imgui and implot cpp libraries which are actively developed and backed by many big software and gaming companies, if It says something to you… Personally I think the core project will outlive many new fancy web-frameworks.

So yes, there are no active developers for thin julia wrappers, just because there are no big demand to re-generate them for newer imgui/implot versions. :slight_smile:

5 Likes

Also, if you want to compare functionality and ease of use, you can try to re-create the exactly same example I posted above - in other plotting libraries. And we’ll see how many efforts and lines of code it will take to create the same iteractive plots and gui controls for other options. :wink:

I think there IS a reason its only one working example for interactive gui+plot in this thread (for now).

For full functionality see interactive tutorials for cpp versions here (most of it available in Julia):
https://pthom.github.io/imgui_manual_online/manual/imgui_manual.html
https://traineq.org/implot_demo/src/implot_demo.html

This makes sense, cheers!

Come to think of it, I may have seen imgui when looking for a rust gui…
Thanks a lot for pointing this out to me, I won’t be as quick at discarding package thanks to you.
Definitely something I will be trying out now!

Challenge acceped! :grinning:

See the second example here: GtkServer.jl

Of course GtkServer is not a serious challenger to ImGui – however, I still think it may be worth a look for putting together a quick GUI demo very easily.

Seriously now, a great alternative package for interactive plots is InspectDR.

2 Likes

The QML.jl problem in Julia 1.8 can be easily fixed by installing CxxWrap from the main branch (] add CxxWrap#master). This will also run all QML examples with GR.jl und Plots.jl.


4 Likes

Makie seems to have been nicely accepted within the team!
Have you ever tried to make it deployable (either as a standalone through packagecompiler or through a webserver)?
On first attempt Packagecompiler does create a sysimage but fails to create the app.
Any experience with this??

@MrHenning ?