How to create standalone applications for Windows with a [G]UI in Julia 1.11 or 1.12

You have two problems, a) “standalone applications”, covered in many ways in Julia (more smooth to compile in some other languages, though you got it working, but consider NOT compiling, just make easily distributable/usable), and b) “how to create .. a UI”. The latter is a much harder choice, in any language, you CAN do it in Julia only, but also consider doing it in another language, and Julia for computation/access to sensor, and even web-based/no-code in general [in Julia], e.g. with Genie (see below).

You don’t actually need to provide a program (in many cases, i.e. only do a web-based UI, very possible with Julia), you also CAN just provide the script, or rather have it packaged in one executable file, just working, without the user knowing how (without needing Julia preinstalled, e.g. with AppBundler.jl; with WebAssembly also possible, but it’s seemingly not easy yet).

From the interesting blog already quoted (I’m hoping Mousetrap.jl is actually better than GTK it builds on, as claimed; Qt also claimed bad to use directly, from C++; maybe not from Julia?):

In retrospect, those books were nothing compared to today’s tech overload. On the desktop, Motif has been passé forever, so you better moved to Qt or GTK. And suffered through not just their inherent terribleness, but also all the upgrade cycles and framework updates that broke your code.
..
And let’s also consider for a moment the web application, that mythical beast which is such a royal pain to deal with, yet is somehow still hailed as transcending the problems of the “traditional” desktop GUI. Well, it transcends and replaces those with other problems that can only be fixed in the next version of the framework, or if that fails, the next completely new framework. If it hurts, … Or just live with it (everything is broken anyway).

You have a LOT of options for UIs with Julia (I added the [G] to the title, I believe you meant traditional desktop/Windows GUI, there are also non-traditional web-based “GUIs” likely not capable of accessing your sensor from browser sandbox; and text-based TUIs, also available with Julia), see Janis’ answer: How to create standalone applications for Windows with a [G]UI in Julia 1.11 or 1.12 - #37 by Janis_Erdmanis

I’m very impressed by some of the options such as (I think relevant to you):

Real-time adaptive optics control with a high level programming language

https://arxiv.org/pdf/2407.07207

This duplication of effort adds costs and slows the experimentation process. We present instead a technical demonstration of performing real time, sub-millisecond latency control with an adaptive optics system using the high-level Julia programming language. This open-source software demonstrates support for multiple cameras, pixel streaming, and network-transparency distributed computing. Furthermore, it is easy to interface it with other programming languages as desired
..
We developed this RTC framework for the SPIDERS instrument, an upcoming high contrast imaging instrument that implements focal plane wavefront sensing, [..] The software is available at the following URL: New-Earth-Lab · GitHub.
..
2.5 Graphical User Interface
We developed a graphical user interface (GUI) to let the user interact and monitor the system. We developed the GUI using the immediate-mode GUI library, Dear ImGui. Dear ImGui is very convenient for making custom interfaces that render at 60 frame/s and 4k resolution using a GPU. As a downside for this convenience, Dear ImGui does not resemble a native OS application nor does it provide affordances for accessibility. We feel that this is acceptable since the RTC software can be controlled via a text-based command line interface, for scripted or interactive use. Screenshots of the GUI are presented in Figures 3 and 4.

Genie is an open source framework with all you need to quickly build production-ready, data-centric web apps with Julia.

  • Drag & drop, no-code UI builder
    Build rich UIs in minutes choosing from 70+ web UI components & plots.
  • Backend app logic in low-code Julia
    Import your Julia code and define your app logic with simple macros.

Note, Genie/Stipple is free/open source, while GenieBuilder, the add-on, has:

Free and Paid Plans

Genie Builder offers a generous free “Lite” tier for hobbyists and non-commercial users with a comprehensive list of components and plots suitable for building most dashboard applications. For commercial use and access to advanced features —such as the theme editor, a broader range of web UI components, and the AI assistant—we offer Pro and Enterprise licenses. Check out our pricing plans for more info. Free EDU licenses are available upon request.

All new signups get a 30-day free trial of the Pro license,

Since it’s proprietary, you do get the company support you want… from them.

I believe you’ve found out by now, and the unfortunate bug/workaround. So please make a PR to its docs, if it can be clarified.

Also FYI, since you mentioned wiki, there is an Julia wiki[book], so please consider adding to it (it’s I guess an official wikibook.org, but unoffical to the Julialang project), it could/should also mention PackageCompiler.jl AND AppBundler.jl, and I think maybe the latter might be a better option, at least for you:

Does anyone know of any other wiki or unofficial resource? Note there is, JuliaLang/julia · Discussions · GitHub in case it applies, no similar for juliaup, I guess discussions relating to it might be ok there, since it’s official. And possibly ok for discussions on PackageCompiler.jl to despite it not official, or maybe semi-official.

Note, not helpful other “wiki”:

1 Like