# Anyone crazy enough to develop a pure Julia GUI toolbox?

**URL:** <https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002>\
**Category:** Visualization\
**Tags:** package, gui\
**Created:** [January 3, 2022, 9:20pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002 "2022-01-03T21:20:04Z")\
**Posts on this page:** 20\
**Page:** 8

<div class="post-metadata">

**Author:** ![Freya\_the\_Goddess](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/freya_the_goddess/32/36835_2.png) [@Freya\_the\_Goddess](https://discourse.julialang.org/u/Freya_the_Goddess)\
**Post date:** [December 18, 2022, 12:49pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/156 "2022-12-18T12:49:00Z")

</div>

Like hackers who prefer to use terminal than Desktop Environment. Some prefer JULIA without GUI as long as they get what they want in the end, less is more.

---

<div class="post-metadata">

**Author:** ![SergeantMike67](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sergeantmike67/32/25103_2.png) [@SergeantMike67](https://discourse.julialang.org/u/SergeantMike67)\
**Post date:** [December 18, 2022, 2:04pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/157 "2022-12-18T14:04:24Z")

</div>

Not intended to make GUI’s manditory for all uses. It is essential to have the option available should your application need it. You want to continue using command line? Go for it

---

<div class="post-metadata">

**Author:** ![sdanisch](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sdanisch/32/1406_2.png) [@sdanisch](https://discourse.julialang.org/u/sdanisch)\
**Post date:** [December 19, 2022, 9:22am UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/158 "2022-12-19T09:22:45Z")

</div>

> [@ufechner7](#):
>
> GLMakie is already pretty nice (even though not 100% native)

What do you mean by that? I don’t know any way to make GLMakie more native besides developing our own hardware drivers - which doesn’t seem to be a productive goal ^^

---

<div class="post-metadata">

**Author:** ![Krastanov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/krastanov/32/6817_2.png) [@Krastanov](https://discourse.julialang.org/u/Krastanov)\
**Post date:** [December 19, 2022, 9:34am UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/159 "2022-12-19T09:34:44Z")

</div>

I think here “native” means “using the native toolkit of the desktop environment so that it is styled seamlessly like any other system app, it supports system themes, accessibility, etc”. That would mean using GTK on Gnome systems for instance. While I love Makie, the buttons you get in Makie definitely do not follow the default colors and fonts of my system. Even `tab` to switch between selected buttons does not work.

---

<div class="post-metadata">

**Author:** ![jules](https://avatars.discourse-cdn.com/v4/letter/j/41988e/32.png) [@jules](https://discourse.julialang.org/u/jules)\
**Post date:** [December 19, 2022, 10:50am UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/160 "2022-12-19T10:50:10Z")

</div>

You cannot even select buttons 😉 All this accessibility stuff had to be cut because I had no time, it would be better if it was there, but there were no resources to do it, and in the end it’s a plotting library, not a GUI toolkit. I don’t know how much time was poured into GTK and the like, but probably a million times more 🙂

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [December 19, 2022, 1:05pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/161 "2022-12-19T13:05:29Z")

</div>

No, I used “native” as synonym for “pure Julia”…

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [December 19, 2022, 1:08pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/162 "2022-12-19T13:08:46Z")

</div>

Well, if you write a GUI for scientific code most of the features of GTK and co are not needed…  
For example, currently I write code to be used by SW testers, and they would already be happy about a simple GUI with a few drop down lists and buttons…  
Makie has all features needed for that, just no GUI builder…

---

<div class="post-metadata">

**Author:** ![mrufsvold](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mrufsvold/32/31600_2.png) [@mrufsvold](https://discourse.julialang.org/u/mrufsvold)\
**Post date:** [December 19, 2022, 1:44pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/163 "2022-12-19T13:44:19Z")

</div>

You got me good there for a minute 😂

---

<div class="post-metadata">

**Author:** ![BambOoxX](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bambooxx/32/22179_2.png) [@BambOoxX](https://discourse.julialang.org/u/BambOoxX)\
**Post date:** [December 19, 2022, 4:44pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/164 "2022-12-19T16:44:05Z")

</div>

I have the feeling I’m just recalling something already said before, but isn’t this kind of no-code editor what the Genie guys try to achieve ?

---

<div class="post-metadata">

**Author:** ![Krastanov](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/krastanov/32/6817_2.png) [@Krastanov](https://discourse.julialang.org/u/Krastanov)\
**Post date:** [December 19, 2022, 4:52pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/165 "2022-12-19T16:52:54Z")

</div>

Some of my scientist colleagues are blind. They would certainly appreciate the accessibility features being there.

But as @jules mentioned, Makie is already an amazing piece of software created under incredible workforce constraints, so it makes sense that a lot of the typical “GUI toolkit” features are missing from a “plotting” library.

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [December 19, 2022, 4:56pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/166 "2022-12-19T16:56:20Z")

</div>

Indeed, [Genie Builder v0.2: speed up your Julia app development](https://genieframework.com/blog/genie-builder-v02-speed-up-julia-app-development/) is a kind of GUI builder, but only for web-apps, and classical desktop GUIs are usually not web-apps…

---

<div class="post-metadata">

**Author:** ![ufechner7](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ufechner7/32/51363_2.png) [@ufechner7](https://discourse.julialang.org/u/ufechner7)\
**Post date:** [December 19, 2022, 4:58pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/167 "2022-12-19T16:58:17Z")

</div>

> [@Krastanov](#):
>
> Some of my scientist colleagues are blind. They would certainly appreciate the accessibility features being there.

But I guess they would be happy with a text-based interface and would not require a GUI…

---

<div class="post-metadata">

**Author:** ![BambOoxX](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/bambooxx/32/22179_2.png) [@BambOoxX](https://discourse.julialang.org/u/BambOoxX)\
**Post date:** [December 19, 2022, 5:12pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/168 "2022-12-19T17:12:31Z")

</div>

I have actually been asking a lot of questions about .NET \<-\> julia compatibility since I started using julia, and some efforts have been made by people much more capable than myself. If you want to have a look at one, see [GitHub - HyperSphereStudio/JdotNET](https://github.com/HyperSphereStudio/JdotNET). It is not pure julia for sure, but the goal is to combine the best of julia and .NET, which seems in itself a pretty nice objective.

---

<div class="post-metadata">

**Author:** ![Raf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raf/32/3383_2.png) [@Raf](https://discourse.julialang.org/u/Raf)\
**Post date:** [December 19, 2022, 7:11pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/169 "2022-12-19T19:11:32Z")

</div>

@Alon I fully agree on the importance of using GUIs for interactive modelling, but you may be a little strict in your definition of GUIs.

I’ve used Interact.jl with ModelParameters.jl to automatically build interactive web interfaces for models

> **[GitHub - rafaqz/ModelParameters.jl: Easy, standardised parameter get/set for...](https://github.com/rafaqz/ModelParameters.jl)**
>
> Easy, standardised parameter get/set for heterogeneous or nested immutable models. - GitHub - rafaqz/ModelParameters.jl: Easy, standardised parameter get/set for heterogeneous or nested immutable m...

An example use-case in:

> **[GitHub - cesaraustralia/DynamicGridsInteract.jl: An iteractive...](https://github.com/cesaraustralia/DynamicGridsInteract.jl)**
>
> An iteractive DynamicGrids.jl UI for Jupyter, atom, desktop and the web. - GitHub - cesaraustralia/DynamicGridsInteract.jl: An iteractive DynamicGrids.jl UI for Jupyter, atom, desktop and the web.

You don’t need drag and drop components when you can generate controls from the structure of the model. But of course this is a limited case, only the sliders are being generated.

I think GLMakie.jl is the future of interactive modelling in Julia, and where I am currently building interfaces - mostly completely with code. But an interactive GUI builder shouldn’t be too hard to make? The main problem currently is it’s much too slow to load, but hopefully that comes down.

It would be amazing if we could do Revise.jl updates with a _currently running_ instance of GLMakie.jl, but I’m not sure if its technically possible. Right now you have to restart the interface to get the latest version of you code.

---

<div class="post-metadata">

**Author:** ![Alon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alon/32/14452_2.png) [@Alon](https://discourse.julialang.org/u/Alon)\
**Post date:** [December 19, 2022, 7:56pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/170 "2022-12-19T19:56:23Z")

</div>

> [@mkitti](#):
>
> Even Matlab is moving towards a web technology based GUI over time as opposed to their current Java based GUI.

I am not opposing web technology for GUI. It would be wonderful to have. If you could use a tool like [whimsical.com](http://whimsical.com) for example and then assign Julia functionality to buttons, textboxes, sliders, etc. You can always wrap a web app in a window that is essentially a browser and serve it as a local app. I’ve done this with [streamlit.io](http://streamlit.io)

The point is to create a GUI with no code, and then continuously edit it, add and remove UI objects while developing the code. Tools for creating a GUI visually and converting it to code are useless because once you edited the code (added some data processing or whatever) you can’t go back to the tool and change the layout without going back to square one on the code.

---

<div class="post-metadata">

**Author:** ![Alon](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/alon/32/14452_2.png) [@Alon](https://discourse.julialang.org/u/Alon)\
**Post date:** [December 19, 2022, 8:03pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/171 "2022-12-19T20:03:42Z")

</div>

> [@Raf](#):
>
> but you may be a little strict in your definition of GUIs

Perhaps so.  
I could live without the Revise aspect. But (1) the idea that the GUI needs to be created by drag&drop and (2) that it needs to be editable (adding/removing buttons, graphs, dropdown boxes…) are critical imo.

---

<div class="post-metadata">

**Author:** ![Raf](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/raf/32/3383_2.png) [@Raf](https://discourse.julialang.org/u/Raf)\
**Post date:** [December 19, 2022, 8:18pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/172 "2022-12-19T20:18:48Z")

</div>

I can see the appeal for drag and drop widgets. I’ve hacked simple editable interfaces together for specific purposes with Interact.jl, but not for the general case of dropping arbitrary widgets and access them from code.

Both Makie.jl and Interact.jl use Observables for communication between interfaces and code - I guess you could add these to the figure object via the interface and access them in the object somehow in your code? It would be a cool project to prototype that. We just need someone to do it. Those Matlab apps are pretty slick… it will be a lot of work to match.

Also it seems that mathworks App designer doesn’t have live code reload either, in the video they are hitting run after any changes. That’s totally possible already in julia just using revise and running your app function.

---

<div class="post-metadata">

**Author:** ![Paul\_Soderlind](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paul_soderlind/32/1753_2.png) [@Paul\_Soderlind](https://discourse.julialang.org/u/Paul_Soderlind)\
**Post date:** [December 19, 2022, 8:40pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/173 "2022-12-19T20:40:53Z")

</div>

Possible repeating some earlier arguments, but here are my thoughts:  
Lots of people here are scientists (or similar). We know our models and a bit about how to code them. But, mostly little about GUIs.

Still, it would be nice to have some simple (and easy to use) tools, especially for teaching material. Like “let’s see what happens if we change x…” and then a slider. If anyone could provide that, then it would be much appreciated.

---

<div class="post-metadata">

**Author:** ![aplavin](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/aplavin/32/222056_2.png) [@aplavin](https://discourse.julialang.org/u/aplavin)\
**Post date:** [December 19, 2022, 8:59pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/174 "2022-12-19T20:59:30Z")

</div>

> [@Paul\_Soderlind](#):
>
> Like “let’s see what happens if we change x…” and then a slider.

Did you try Pluto? It’s great for this kind of interactivity.

---

<div class="post-metadata">

**Author:** ![Paul\_Soderlind](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/paul_soderlind/32/1753_2.png) [@Paul\_Soderlind](https://discourse.julialang.org/u/Paul_Soderlind)\
**Post date:** [December 19, 2022, 9:02pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/175 "2022-12-19T21:02:01Z")

</div>

Yes, I’ve tried it. Cool, but a step too far (everything changes everything) for what I can handle.

[Previous page](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002.md?page=7)

[Next page](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002.md?page=9)
