# Are we gui yet?

**URL:** https://discourse.julialang.org/t/are-we-gui-yet/86255
**Category:** Visualization
**Tags:** question, guis, plots
**Created:** [August 24, 2022, 10:50am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255 "2022-08-24T10:50:11Z")
**Posts on this page:** 19
**Page:** 1

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [August 24, 2022, 10:50am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/1 "2022-08-24T10:50:11Z")

</div>

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!

---

<div class="post-metadata">

### Author: ![zsoerenm](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zsoerenm/32/664_2.png) [@zsoerenm](https://discourse.julialang.org/u/zsoerenm)
#### Post date: [August 24, 2022, 11:44am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/2 "2022-08-24T11:44:22Z")

</div>

I suggest Makie.jl

- It has a good documentation: [Home](https://makie.juliaplots.org/stable/)
- It has widgets (see e.g. [SliderGrid](https://makie.juliaplots.org/v0.17.13/examples/blocks/slidergrid/index.html) I’m unsure about file picker though.)
- It supports plots 😉
- Package is well maintained.

---

<div class="post-metadata">

### Author: ![jheinen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jheinen/32/2787_2.png) [@jheinen](https://discourse.julialang.org/u/jheinen)
#### Post date: [August 24, 2022, 1:27pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/3 "2022-08-24T13:27:31Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [August 24, 2022, 1:28pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/4 "2022-08-24T13:28:01Z")

</div>

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

---

<div class="post-metadata">

### Author: ![jebej](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jebej/32/1784_2.png) [@jebej](https://discourse.julialang.org/u/jebej)
#### Post date: [August 24, 2022, 2:19pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/5 "2022-08-24T14:19:01Z")

</div>

Another option is to use e.g. [Electron](https://github.com/davidanthoff/Electron.jl) for the frontend (GUI in html + javascript), and Julia on the backend. There are many interactive javascript plotting libraries, like plotly.

---

<div class="post-metadata">

### Author: ![EvoArt](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/evoart/32/25357_2.png) [@EvoArt](https://discourse.julialang.org/u/EvoArt)
#### Post date: [August 24, 2022, 2:47pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/6 "2022-08-24T14:47:57Z")

</div>

There’s a no-code option now, from Genie. [Announcing Genie Builder, a no-code plugin to quickly build web GUIs & dashboards](https://discourse.julialang.org/t/announcing-genie-builder-a-no-code-plugin-to-quickly-build-web-guis-dashboards/84643)

---

<div class="post-metadata">

### Author: ![nsajko](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/nsajko/32/221187_2.png) [@nsajko](https://discourse.julialang.org/u/nsajko)
#### Post date: [August 24, 2022, 4:32pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/7 "2022-08-24T16:32:08Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![sairus7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sairus7/32/10816_2.png) [@sairus7](https://discourse.julialang.org/u/sairus7)
#### Post date: [August 24, 2022, 6:01pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/8 "2022-08-24T18:01:51Z")

</div>

Here is a GUI example using CImGui and ImPlot:

> <https://gist.github.com/sairus7/c87a7dc82af4859dd0c2f8dc58d361c0>

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

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [August 25, 2022, 6:18am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/9 "2022-08-25T06:18:51Z")

</div>

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

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [August 25, 2022, 6:21am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/10 "2022-08-25T06:21:51Z")

</div>

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.

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [August 25, 2022, 6:24am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/11 "2022-08-25T06:24:54Z")

</div>

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

---

<div class="post-metadata">

### Author: ![sairus7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sairus7/32/10816_2.png) [@sairus7](https://discourse.julialang.org/u/sairus7)
#### Post date: [August 25, 2022, 9:05am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/12 "2022-08-25T09:05:26Z")

</div>

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

[CImGui.jl](https://github.com/Gnimuc/CImGui.jl) and [ImPlot.jl](https://github.com/wsphillips/ImPlot.jl) are just convenience wrappers around [LibCImGui.jl](https://github.com/JuliaImGui/LibCImGui.jl) autognerated wrapper around [cimgui](https://github.com/cimgui/cimgui) and [cimplot](https://github.com/cimgui/cimplot) autogenerated c-library wrappers around [imgui](https://github.com/ocornut/imgui) and [implot](https://github.com/epezent/implot) cpp libraries which are actively developed and backed by [many big software and gaming companies](https://github.com/ocornut/imgui/wiki/Sponsors), 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. 🙂

---

<div class="post-metadata">

### Author: ![sairus7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sairus7/32/10816_2.png) [@sairus7](https://discourse.julialang.org/u/sairus7)
#### Post date: [August 25, 2022, 9:17am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/13 "2022-08-25T09:17:20Z")

</div>

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. 😉

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://pthom.github.io/imgui_manual_online/manual/imgui_manual.html)  
[https://traineq.org/implot\_demo/src/implot\_demo.html](https://traineq.org/implot_demo/src/implot_demo.html)

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [August 25, 2022, 10:42am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/14 "2022-08-25T10:42:14Z")

</div>

This makes sense, cheers!

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [August 25, 2022, 10:51am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/15 "2022-08-25T10:51:31Z")

</div>

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!

---

<div class="post-metadata">

### Author: ![mbaz](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mbaz/32/17295_2.png) [@mbaz](https://discourse.julialang.org/u/mbaz)
#### Post date: [August 25, 2022, 1:26pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/16 "2022-08-25T13:26:03Z")

</div>

> [@sairus7](#):
>
> I think there IS a reason its only one working example for interactive gui+plot in this thread

Challenge acceped! 😀

See the second example here: [GtkServer.jl](https://mbaz.github.io/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](https://github.com/ma-laforge/InspectDR.jl).

---

<div class="post-metadata">

### Author: ![jheinen](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/jheinen/32/2787_2.png) [@jheinen](https://discourse.julialang.org/u/jheinen)
#### Post date: [August 26, 2022, 8:00am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/17 "2022-08-26T08:00:13Z")

</div>

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`.

 ![qml_ex](https://global.discourse-cdn.com/julialang/original/3X/9/a/9a3ca80ec1a386b61d68a7c91a484e5d5849f42b.png)  
 ![qml_plots_ex](https://global.discourse-cdn.com/julialang/original/3X/5/7/57ea65997af16f090debebfdf515f430db4a68b9.png)

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [September 1, 2022, 2:16pm UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/18 "2022-09-01T14:16:24Z")

</div>

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??

---

<div class="post-metadata">

### Author: ![dgs](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dgs/32/7015_2.png) [@dgs](https://discourse.julialang.org/u/dgs)
#### Post date: [September 23, 2022, 9:04am UTC](https://discourse.julialang.org/t/are-we-gui-yet/86255/19 "2022-09-23T09:04:04Z")

</div>

@MrHenning ?
