Hi,
I thought I had posted my library before but seems I hadn’t. The project is still in early stages but it’s growing and so I think it should have it’s own post here. BTW I still don’t have an icon or mascot for this so please let me know if you have an idea
elixir-desktop
Elixir desktop is a library that wraps :wxWidgets
and Phoenix.LiveView
in order to create native Windows+Linux+macOS applications. The main driver of this is my own company project https://diode.io where we produce server and (desktop) client code now from largely the same code bases for our mesh-networking apps.
Additionally, the library applies the same LiveView
concepts to rendering OS-Menus such as the window menu and the taskbar icon menu. So that the developer does not need to get in touch with :wxWidgets
or any system specifics.
GitHub link desktop library
GitHub link desktop example
android-example-app
Extending from this the elixir-desktop
library now also supports abstracting Android apps using the very same interface. Meaning that a desktop app written using elixir-desktop
can run unmodified natively on an android phone. The example project (ready to clone) ships the full Elixir+Erlang runtime ported to all common Android targets.
Also this Android example in contrast to the Windows/Linux/macOS ports is ready to be packaged. Just click “Build App Bundle” in Android studio and you get an application package that you can start shipping today!
GitHub link android example
Hex package
Why?
At the core it is really about code re-use and grew into this. We started with a pretty large Elixir based server codebase, then needed some CLI clients, then the need for UI clients developed, then that grew and now we need mobile Apps as well…
But also LiveView is a great fit for implementing desktop and mobile app interactions quickly. The ability to bring those interactions is turbo and potentially a massive new use-case.
Next Steps
-
Packaging for Windows, Linux, macOS – I talked about this before but had to take care of the mobile app for internal reasons first. Eventually packaging installers for the platforms will become part of the elixir-desktop project.
-
iOS?
How to help
There are many open ends here and integrations to improve. If you’re curious about this or better just want to start your own app with this and have an itch to scratch in elixir-desktop let me know. I’m reachable here, via the Elixir Slack and of course in GitHub.
PS
There is a somewhat old YouTube video of me presenting this the first time here: https://www.youtube.com/watch?v=aFpBHQ0YEw4&t=2428s
Cheers!