dominicletz

dominicletz

Creator of Elixir Desktop

Elixir-desktop - Android, Window, macOS, Linux LiveView Apps with Elixir

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 :slight_smile:

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

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

  2. 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!

Most Liked

dominicletz

dominicletz

Creator of Elixir Desktop

Update: The sample projects of elixir-desktop have been upgraded to use asdf and the new official Elixir & Erlang builds. Now OTP25 includes all the necessary changes for iOS and Android builds and no custom builds are required anymore. If the custom plumbing of previous versions was holding you back from creating a mobile app before, fear no more and grab the new sources:

https://github.com/elixir-desktop/ios-example-app
https://github.com/elixir-desktop/android-example-app

Nicd

Nicd

Congratulations on getting to the app stores, @dominicletz!
https://twitter.com/DominicLetz/status/1506675402059792388

I guess this is the first Elixir application available in mobile app stores?

Nicd

Nicd

I just adapted my earlier app to use elixir-desktop and got it running on my phone! :slight_smile: Details here: GeoTherminator, remote UI for Thermia geothermal heat pumps - #7 by Nicd

Last Post!

AstonJ

AstonJ

Where Next?

Popular in Announcing Top

alisinabh
Hey everyone i’ve developed a library for Jalaali calendar for elixir which supports converting Gregorian dates to Jalaali and vice vers...
New
mischov
import Meeseeks.CSS html = HTTPoison.get!("https://news.ycombinator.com/").body for story <- Meeseeks.all(html, css("tr.athing")) do...
New
treble37
Just looking for a little feedback on a tiny helper library I built - Sometimes I find the need to convert maps with atom keys to maps w...
New
pkrawat1
Hey guyz We at @aviabird are working on a payment library in elixir/phoenix. We are targeting March 2018 to add 56 Gateways to it. Have...
New
kip
Image is an image processing library for Elixir. It is based upon the fabulous vix library that provides a libvips wrapper for Elixir. I...
622 19460 194
New
trisolaran
Hi! :waving_hand: I would like to present LiveSelect, a little library that I wrote to easily add a dynamic selection input to your LV f...
198 11220 107
New
type1fool
WebAuthnLiveComponent WebAuthnComponents See this post about renaming the package. Passwordless authentication for Phoenix LiveView app...
New

Other popular topics Top

Qqwy
Update: How to use the Blogs & Podcasts section You can post links to your blog posts or podcasts either in one of the Official Blog...
3271 130286 1222
New
KronicDeth
Elixir plugin for JetBrain’s IntelliJ Platform (including Rubymine) This is a plugin that adds support for Elixir to JetBrains IntelliJ...
289 36654 110
New
baxterw3b
Hi guys, i’m new in the Elixir world, and i have to say, that i love it! i’m having some problem to understand anonymous functions with ...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New
greenz1
I have a phoenix application from which a user can download multiple(5-6) files of size 1MB. I couldn’t find anything related to sending ...
New
gshaw
What is the idiomatic way of matching for not nil in Elixir? E.g., First way: defp halt_if_not_signed_in(conn, signed_in_account) when...
New

We're in Beta

About us Mission Statement