C# and Elm for Tiny Executables.
This is a skeleton for building cross-platform (Windows, macOS, Linux), simple, tiny applications with C# and Elm. The resulting application will pop an icon in the notification area, and will be reachable inside the user's browser.
The focus of CAEFTE is on tiny executables. Using C# means leveraging the massive .Net Framework, which is preinstalled on any Windows computer. This gives the developer access to a huge library with minimal footprint.
Elm is a delightful language for reliable webapps. It's fast, the bundle size is small and the developer experience is awesome.
An hello world weights about 119k, 22kb if compressed and, on Windows, has no prerequisites.
To run the result on Linux/macOS you need to install mono.
If using Windows, install WSL and use that.
Except for parcel, the other packages should be available in any distro's repositories.
make -j
The output will be put in the out
directory.
make run
This will start a live-reloading server (for the Elm part, the C# part still requires you to stop and restart the server).
Threepenny-gui: https://wiki.haskell.org/Threepenny-gui - Haskell alternative Neutralinojs: https://neutralino.js.org/ - C++ alternative
- Integrate something like this to fix the notification icon under mono/Linux.
- Investigate whether to use a tray icon vs a notification icon.
- Investigate whether to use a WebView to be more like Electron.
- Investigate detecting being run from the CLI and not popping an icon.
- Implement APIs exposing user types (expose as Elm's records).
- Implement APIs exposing progress [choose between (int, IEnumerable) f() or IEnumerable f(out int)]
- Implement APIs for reading data from body/url
PRs encouraged!