Fl4m3Ph03n1x

Fl4m3Ph03n1x

Best option to do desktop apps in Elixir

Background

I have a little pet project that does some requests to an external site. The logic is pretty much figured out and now I want to do a Desktop app with it.
This desktop app has 2 requirements:

  1. it needs to be in an executable file that one can run by double clicking.
  2. it has to work for Linux and Windows.

Options

So, I have made a small research and found 2 main options:

  1. Make a webapp using PhoenixLiveView and turn it into a desktop app using webengine_kioks. A blog post describing this can be found here (Puddle Of Code - How to Create Desktop Application with Elixir).
  2. Using Scenic to make a desktop app

The first option looks rather gimmicky. Communication between Phoenix and my app would be done in HTTP and I would have to add some workarounds to make it feel like a desktop app. I would also have to link the Qt library to the release for Linux and Windows.

The second option looks rather promising, but I am not sure on how to use it with mix release, nor how it would work with Windows.

Questions

With this in mind, I have some questions:

  • Is there a default way to make desktop apps in Elixir? (If so, what is it?)
  • Which of the two options I studied would be the best way to go?
  • Is it possible to create an executable that launches the app when I double click it?

Marked As Solved

wanton7

wanton7

Sounds to me it might be this video https://youtu.be/aFpBHQ0YEw4?t=2016

Also Liked

dominicletz

dominicletz

Creator of Elixir Desktop

I’ve been working on a library to make the desktop apps part possible here: GitHub - elixir-desktop/desktop: Building Local-First apps for Windows, MacOS, Linux, iOS and Android using Phoenix LiveView & Elixir! · GitHub it all depends on Erlang OTP24 because that includes my pull request to include :wxWebView and so you can have a native window that shows your Elixir LiveView app. So the desktop library brings you all of that and avoids the need to mess around with any of the :wx* libs in your app.

I’ve got a local version of an app builder that produces a .dmg for macOS and a nsis Windows installer but it’s still a work in progress - planning to get that desktop-builder ready for the Code Beam V in May.

dominicletz

dominicletz

Creator of Elixir Desktop

Thanks for linking that @wanton7 . If you guys are curious about that project we’re currently hiring for a position to work on this. So if you want to be paid to work on open source let us know: https://diode.io/jobs/elixir-engineer

Cheers!

Exadra37

Exadra37

But not Revery:

https://github.com/revery-ui/revery

The new editor one the block uses it.

Where Next?

Popular in Questions Top

aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
skosch
To my knowledge, put_in, Map.update etc. all have the one limitation of not automatically creating intermediate keys when needed (for exa...
New
lessless
I believe there are people here who are dealing with CSV files import on the daily basis, and since Excel is a really popular tool there ...
New
tduccuong
Hi, is there any work on GUI with Elixir, that is similar to Electron/Javascript? My idea is to bundle Phoenix and BEAM into a single se...
New
jononomo
I am trying to figure out how Mix knows whether the environment is test, dev, or prod – where is this set? Thanks.
New
lucidguppy
I have a super simple question about elixir - how would I take a file like this foo bar baz and output a new file that enumerates th...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers’ Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
script
If I have a string “1000 cfu/ml” . I want to remove the characters and / and space . So the string is like this "1000" What is the ...
New
chensan
I have a User schema with a :from_id field set to type :string: defmodule TweetBot.Repo.Migrations.CreateUsers do use Ecto.Migration ...
New
svb
Hi! Currently I want to submit a form by pressing the Enter key. However, since my input field is of type “textarea” this is just adds a...
New

Other popular topics Top

malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
Nvim
Anybody knows a comprehensive comparison of Django and Phoenix, thanks for the help. Where are they similar? Where do they differ the m...
New
JeremM34
Hello, how can I check the Phoenix version ? Thanks !
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
dokuzbir
I want to highlight html closing tags when i click a html tag. That works in .html files but doesnt work for html.eex templates. How can...
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
freewebwithme
Using vs code and installed ElixirLS: support and debugger. And I got an error popped up on start up says Failed to run ‘elixir’ comma...
New
romenigld
I am trying to run a deploy with docker and I successfully runned with this command: docker build -t romenigld/blog-prod . but when I t...
New
klo
Got a question about when to concat vs. prepending items to list then reversing to achieve appending. So i know lists boil down to [1 | ...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New

We're in Beta

About us Mission Statement