Hello folks!
Last weekend I played with running Elm inside Qt desktop applications.
It works out pretty nicely!
- Full TEA (commands, subscriptions, everything)
- View layer similar to
elm/html
, but following the QML types - Interop and view done with encoding view data to JSON and sending to Qt through ports, then creating the objects on JS side there.
- Compiled to a tiny native binary (I didn’t figure out static linking yet) - this is no WebKit, no HTML, these are desktop widgets
- Also, Qt compiles to mobile platforms too, so this could potentially be in the same league as
elm-native-ui
!
Repo: https://github.com/Janiczek/elm-in-qt
See particularly the Elm Counter code.
Work in progress:
- support events that need to decode data from an object (like text input contents)
- performance optimization (the Counter demo is quite sluggish right now; I’m nuking the whole object tree and creating it again whenever anything changes! so some proper “VDOM” diffing / patching will do wonders, I hope)
- look at C++ Qt side of things… right now we mainly stay in the QML world
- dynamically generate the
View.*
modules from some Qt reference; polish the library; publish it; streamline the process of starting a new Qt project in this way