1.0.0 β€’ Published 5 years ago

elm-desktop-app v1.0.0

Weekly downloads
1
License
MIT
Repository
github
Last release
5 years ago

Build Status Latest Elm package version Latest CLI version

elm-desktop-app is the simplest way to write desktop applications in Elm. It's built on top of Electron, and it currently supports the following uses:

  • Your app can persist state to disk as a JSON file
  • Build and package Mac, Linux, and Windows apps
  • (soon) prepare and publish an npm package that can launch your app from the command line

Usage

Use the elm-desktop-app command line tool to create a new project, which includes a dependency on the avh4/elm-desktop-app Elm pacakge and a working starting-point for you app:

npm install -g elm-desktop-app

mkdir my-app
cd my-app
elm-desktop-app init

Edit the generated src/Main.elm to implement your app and define how to persist data (you can see the full example code here):

import DesktopApp
import DesktopApp.JsonMapping as JsonMapping

main : DesktopApp.Program Model Msg
main =
    DesktopApp.program
        { init = ( init, Cmd.none )
        , update = \msg model -> ( update msg model, Cmd.none )
        , subscriptions = \model -> Sub.none
        , view = view
        , persistence = Just persistence
        }
        
type alias Model =
    { name : String
    , count : Int
    }
    
...
    
persistence : JsonMapping.ObjectMapping Model Msg
persistence =
    JsonMapping.object Loaded
        |> JsonMapping.with "name" .name JsonMapping.string
        |> JsonMapping.with "count" .count JsonMapping.int

Use the command line tool to run your app:

elm-desktop-app run

Screenshot of the running example app

The user data for your app is automatically persisted! πŸ’ΎπŸŽ‰

You can easily build Mac, Linux, and Windows packages (packages are built to ./elm-stuff/elm-desktop-app/app/dist/):

elm-desktop-app package