Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/minibill/caefte
C# And Elm For Tiny Executables
https://github.com/minibill/caefte
Last synced: about 7 hours ago
JSON representation
C# And Elm For Tiny Executables
- Host: GitHub
- URL: https://github.com/minibill/caefte
- Owner: miniBill
- License: mit
- Created: 2020-02-16T17:13:21.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-06-25T13:07:10.000Z (5 months ago)
- Last Synced: 2024-06-25T14:34:25.188Z (5 months ago)
- Language: C#
- Size: 47.9 KB
- Stars: 2
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# CAEFTE #
C# and Elm for Tiny Executables.## What's this? ##
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.## Why C#? ##
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.## Why Elm? ##
[Elm](https://elm-lang.org/) is a delightful language for reliable webapps. It's fast, the bundle size is small and the developer experience is awesome.## Why should I use this ##
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](https://www.mono-project.com/download/stable/).
## Requisites for compilation ##
If using Windows, install [WSL](https://docs.microsoft.com/it-it/windows/wsl/install-win10) and use that.* [Parcel](https://parceljs.org/);
* `make`;
* [ImageMagick](https://imagemagick.org/script/download.php);
* [mono](https://www.mono-project.com/download/stable/);
* [pigz](https://zlib.net/pigz/) or [gzip](https://www.gzip.org/) (I *strongly* recommend installing `pigz`);
* [optipng](http://optipng.sourceforge.net/).Except for parcel, the other packages should be available in any distro's repositories.
## Compile ##
```bash
make -j
```The output will be put in the `out` directory.
## Run while developing ##
```bash
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).
## Similar projects ##
**Threepenny-gui**: https://wiki.haskell.org/Threepenny-gui - Haskell alternative
**Neutralinojs**: https://neutralino.js.org/ - C++ alternative## TODO ##
* Integrate something like [this](https://github.com/dlech/Keebuntu) 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/urlPRs encouraged!