# 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:** 10

<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 21, 2022, 4:01pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/196 "2022-12-21T16:01:53Z")

</div>

Copy/paste in text boxes would be nice too

---

<div class="post-metadata">

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

</div>

You know what would be amazing? A natural language description to gui code chatbot.

“I need a window with a plot tool and a set of inputs for the quantities … Put a scroll bar on the left that scrolls the pane of inputs … Now do it in a dark theme with small drop shadows around the controls… When you hover over each control pop up a hint box… Now write the hint text…”

---

<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 23, 2022, 3:02pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/198 "2022-12-23T15:02:18Z")

</div>

> [@uniment](#):
>
> I’m curious what UI things you’re finding JavaScript unable to do.

javascript is not a visual language, it can’t do any UI things. It can only code UI things. There’s a world of difference.

---

<div class="post-metadata">

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

</div>

Is anybody familiar with the [`guiEditor`](https://gitlab.com/labinformatica/guieditor), a visual graphical user interface editor for GNU Octave?

`guiEditor` appears similar to MathWorks `guide`, and it is in active development. It utilizes the `Qt` framework.

It is described in [this article](https://onlinelibrary.wiley.com/doi/pdf/10.1002/eng2.12269).

Perhaps this work might offer inspiration and a path for a similar tool for Julia.

---

<div class="post-metadata">

**Author:** ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)\
**Post date:** [January 3, 2023, 9:04pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/200 "2023-01-03T21:04:53Z")

</div>

> [@DNF](#):
>
> Plots.jl

Maybe that’s a meaningful version of the proposed idea? Ie GUIs.jl which wraps other backends like GTK.jl (or potentially Quartz.jl, LinuxWM.jl, WindowsWM.jl, …) so a unified interface can be used that has a Julia-style design. But probably these frameworks are too different to make this possible.

---

<div class="post-metadata">

**Author:** ![Audrius-St](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/audrius-st/32/24175_2.png) [@Audrius-St](https://discourse.julialang.org/u/Audrius-St)\
**Post date:** [February 2, 2023, 7:45am UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/201 "2023-02-02T07:45:34Z")

</div>

With regards to the excellent Makie plotting package,  
one widget I would suggest adding is a tree-type directory and file display with an option to return all the files names in a directory for loading into an application or returning the name of a file or names of a set of files selected within a directory for loading into an application.

I think that there are many common use scenarios for such a widget.  
Assume that it would involve a fair bit of gruntwork.

As a general comment, after having followed this discussion, rather than a full heavyweight Julia GUI toolbox - a massive task, a reinvention of the wheel with a potential steep learning curve for users [re Qt, GTK, etc.], my preference is that the set of Makie widgets becomes the de facto standard for a lightweight Julia [scientific] GUI as the current set of Makie widgets is a very good start.

---

<div class="post-metadata">

**Author:** ![uniment](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/uniment/32/24532_2.png) [@uniment](https://discourse.julialang.org/u/uniment)\
**Post date:** [February 2, 2023, 8:32am UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/202 "2023-02-02T08:32:26Z")

</div>

> [@jules](#):
>
> I’ll take volunteers to implement these

> [@SergeantMike67](#):
>
> If there is already a project out there doing this, I’m not looking to steal thunder and will gladly contribute to that project.

Seems a perfect fit.

---

<div class="post-metadata">

**Author:** ![dumfka](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dumfka/32/217682_2.png) [@dumfka](https://discourse.julialang.org/u/dumfka)\
**Post date:** [July 12, 2025, 1:14am UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/203 "2025-07-12T01:14:41Z")

</div>

I am making it rn, already got a window up \*sunglasses

---

<div class="post-metadata">

**Author:** ![MDSW](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@MDSW](https://discourse.julialang.org/u/MDSW)\
**Post date:** [July 12, 2025, 2:30pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/204 "2025-07-12T14:30:03Z")

</div>

I appreciate when some of these older threads get resurfaced for us newcomers… good read and reinforces [some things I’ve been thinking about](https://discourse.julialang.org/t/whats-the-feasibility-of-and-interest-in-tooling-for-building-desktop-science-engineering-and-analysis-tools/130094):

- Focus on scientific and engineering app development, particularly [sharing of internal tools](https://discourse.julialang.org/t/how-to-create-standalone-applications-for-windows-with-a-g-ui-in-julia-1-11-or-1-12/127823/21)
- Leverage the existing, well-understood Julia UI ecosystem players, e.g. Makie and Genie, rather than reinventing yet-another-widget-system
- Be cross-platform. Your practical [list of options](https://en.wikipedia.org/wiki/List_of_platform-independent_GUI_libraries) isn’t too big to explore (and I’ve explored most of them at this point…)
- More recently, I’ve been thinking about the “liveness” aspect and how that is a more Julian experience in parallel with our REPL-based workflows. The [discussion here](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/144) about tools like GUIDE resonates with some things I’ve been looking at this week such as tools like the [Pharo Smalltalk environment](https://pharo.org/); I’ve found myself easily able to substitute “Julia” for “Pharo” in many of the [threads](https://medium.com/concerning-pharo/pharo-50c66685913c) describing the philosophy behind the environment.

In conjunction with (but, importantly, not dependent upon) improvements in the [compilation environment](https://discourse.julialang.org/t/can-juliac-increase-julia-adoption/127838), I agree with [the sentiment](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/118) that such a capability could contribute to a step function in Julia adoption.

---

<div class="post-metadata">

**Author:** ![ShalokShalom](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/shalokshalom/32/52462_2.png) [@ShalokShalom](https://discourse.julialang.org/u/ShalokShalom)\
**Post date:** [July 13, 2025, 7:13am UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/205 "2025-07-13T07:13:34Z")

</div>

> [@MDSW](#):
>
> More recently, I’ve been thinking about the “liveness” aspect and how that is a more Julian experience in parallel with our REPL-based workflows. The [discussion here](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/144) about tools like GUIDE resonates with some things I’ve been looking at this week such as tools like the [Pharo Smalltalk environment](https://pharo.org/); I’ve found myself easily able to substitute “Julia” for “Pharo” in many of the [threads](https://medium.com/concerning-pharo/pharo-50c66685913c) describing the philosophy behind the environment.

Although offtopic, you might be interested into that universal Smalltalk-like IDE (written in Pharo) that you can add Julia support for.

> **[Glamorous Toolkit](https://gtoolkit.com/)**
>
> Glamorous Toolkit is the Moldable Development Environment.

---

<div class="post-metadata">

**Author:** ![MDSW](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@MDSW](https://discourse.julialang.org/u/MDSW)\
**Post date:** [July 13, 2025, 2:04pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/206 "2025-07-13T14:04:42Z")

</div>

Yes, tracking Glamorous and moldable development, [malleable software](https://www.inkandswitch.com/malleable-software/) (and [other research](https://www.youtube.com/watch?v=w7DVlI_Ztq8&t=2s) at [Ink & Switch](https://www.inkandswitch.com/)), and related efforts – all are quite on-topic as ways to think about a GUI development experience that is appropriately Julian. I didn’t know about the existing Julia support in GT – thanks for that! – and would be interested in experiences of anyone who has used it or something similar.

---

<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:** [July 15, 2025, 7:24pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/207 "2025-07-15T19:24:48Z")

</div>

Love to see this discussion re-surface. As usual you folks are talking over this humble Biologist’s head but it has re-kindled my interest in the GUI development.

BTW I have tried GTK.jl and QT and find them to be obtuse and almost intentionally confusing. Glide (if that is the name of the GTK’s GUI for GUI’s) in my opinion needs to become the standard of how to write absolutely horrific software yet pass it off as quality. On top of that the documentation is actually worse that the software.

> [@uniment](#):
>
> (A more important question: How can we wean the U.S. off of U.S. Customary Units and onto SI units? I’m tired of measuring mass in slugs and distances in furlongs, and the degree to which the degrees I measure disagree with other people’s degrees is disagreeable.)

As an American if you figure this one out, let us all know. We tried in the 70’s but it petered out. Why? Don’t know. I hate using obscure completely arbitrary units for measurement of anything.

---

<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:** [July 15, 2025, 7:43pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/208 "2025-07-15T19:43:06Z")

</div>

> [@SergeantMike67](#):
>
> QT and find them to be obtuse and almost intentionally confusing.

What do you not like about QML.jl ?

I know I should have improved the documentation more than I did so far, but I think the examples are great. If you want to improve the current status, the most effective way would be to improve the documentation of QML.jl. A lot less work than writing a new GUI library.

---

<div class="post-metadata">

**Author:** ![MDSW](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@MDSW](https://discourse.julialang.org/u/MDSW)\
**Post date:** [July 15, 2025, 9:00pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/209 "2025-07-15T21:00:31Z")

</div>

> [@SergeantMike67](#):
>
> Glide (if that is the name of the GTK’s GUI for GUI’s)

[Glade](https://infrastructure.pages.gitlab.gnome.org/glade-web/)… and it’s deprecated in favor of [Cambalache](https://gitlab.gnome.org/jpu/cambalache).

I’m generally thinking GTK, Qt and [similar](https://en.wikipedia.org/wiki/List_of_widget_toolkits) are good to have as options through Julia bindings, but are best for general application development with a relatively significant investment. Julia isn’t too great in this space at this time. We need something a little more lightweight (for the developer), but that closes the perceived gap between the Julia-native toolkits (e.g. Makie, Genie) and the kinds of desktop apps we might develop and deploy as internal tools for scientists and engineers.

---

<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:** [September 17, 2026, 3:49pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/210 "2026-09-17T15:49:06Z")

</div>

> [@Alon](#):
>
> There exists a fundamentally **different paradigm**

> [@aplavin](#):
>
> For those of us who haven’t seen this paradigm, could you share some video(s) of how it actually works

> [@Elrod](#):
>
> How do you offload it?  
> Like, [Pluto.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/Pluto) automatically rerunning on updates? I do get how that could be a time saver/convenient.

## Update 4 years later…

To my great shame, I never found the time to properly learn Julia. My own work kept me on Python, but I keep hoping to make the move.

I had some time between jobs and I created the Python library [iterlab · PyPI](https://pypi.org/project/iterlab/)  
It’s **not** yet another GUI library, it demonstrates the _research paradigm_ I was talking about 4 years ago:

1. You never ever program a GUI interface. layout is quickly drawn.
2. It allows you to jump between the code, the GUI editor and your app, back and forth, never reset the app, edit GUI while using the GUI.
3. It allows you to edit the code while the GUI is running.
4. You never restart the app, even if you added a new import to your code, it just loads it in the background.

I [**made a video**](https://www.youtube.com/watch?v=G_HzmkInHAs) to demonstrate it (I wish I was better at editing videos…), it demonstrates the **Process of iterative research** where GUI is **accelerating** your work, not creating extra work.

I do hope this paradigm would resonate with other Julia people, and that there will be an appetite to develop a **similar Julia tool**.

---

<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:** [September 17, 2026, 4:29pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/211 "2026-09-17T16:29:52Z")

</div>

Just use CImGui.jl and ImPlot.jl - I makes any sort of research / interactive UIs very easy to write:

 ![image](https://global.discourse-cdn.com/julialang/original/3X/5/e/5e5be1fbc249c5d6d2f3d623afe7840b18181898.webp)

---

<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:** [September 17, 2026, 4:45pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/212 "2026-09-17T16:45:56Z")

</div>

Nice looking GUI. Can the ClmGui.jl package be used to create a graphical data entry form for PostGreSql or a SQLite database?

---

<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:** [September 17, 2026, 4:50pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/213 "2026-09-17T16:50:26Z")

</div>

> [@sairus7](#):
>
> [CImGui.jl](https://juliaregistries.github.io/General/packages/redirect_to_repo/CImGui)

Thanks but this is almost the opposite of the proposed paradigm. Crucially, you need a GUI that is never programed, only drawn, and that you can edit the GUI and the code **while** running the GUI

---

<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:** [September 17, 2026, 5:09pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/214 "2026-09-17T17:09:40Z")

</div>

This is an interesting approach, make it sort infinitely variable but control the display through programming?

---

<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:** [September 17, 2026, 5:12pm UTC](https://discourse.julialang.org/t/anyone-crazy-enough-to-develop-a-pure-julia-gui-toolbox/74002/215 "2026-09-17T17:12:30Z")

</div>

> GUI that is never programed, only drawn

I’m not sure what do you mean by this. You always have some widgets to declare, the problem is state management and interactions. With ImGui there is no separate system for “UI state programming”, it is just redrawn every frame, so UI code is declarative and minimal and bound to your variables directly - no layout description, no callbacks.

Together with Revise you can actually change code without restarting UI window. Change your data variables in REPL and have them directly updated.

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

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