mirror of
https://github.com/fjvallarino/monomer.git
synced 2024-08-16 15:30:27 +03:00
An easy to use, cross platform, GUI library for writing Haskell applications.
|
||
---|---|---|
.github/workflows | ||
assets | ||
cbits | ||
dev-test-app | ||
docs | ||
examples | ||
nix | ||
src | ||
test/unit | ||
.ghci | ||
.ghcid | ||
.gitignore | ||
.hlint.yaml | ||
cabal.project | ||
ChangeLog.md | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
generate-hackage-docs.sh | ||
Info.plist | ||
LICENSE | ||
monomer.cabal | ||
package.yaml | ||
README.md | ||
Setup.hs | ||
shell.nix | ||
stack-8.10.yaml | ||
stack.yaml | ||
stack.yaml.lock | ||
watch-tests.sh |
Monomer
A cross-platform GUI library for Haskell
An easy to use, cross platform, GUI library for writing native Haskell applications.
Monomer provides a framework similar to the Elm Architecture, allowing the creation of GUIs using an extensible set of widgets with pure Haskell.
Objectives
- Be easy to learn and use.
- Be extensible with custom widgets.
- Run on Windows, Linux and macOS.
- Have good documentation.
- Have good examples.
These are not objectives for this project
- Have a native look and feel.
Why would you want to use this library?
- You want to write your application in Haskell.
- You want to write a native, not web based, application.
Documentation
Setup
You can read how to setup your environment here.
Tutorials
Introductory tutorials are available:
- 01 - Basics
- 02 - Styling
- 03 - Life cycle
- 04 - Tasks
- 05 - Producers
- 06 - Composite
- 07 - Custom widgets
- 08 - Themes
Examples
Beyond the tutorials, a few real world like examples are available:
Haddock
You can read the source code's documentation here.
Design decisions
In case you wonder why some choices were made, you can read here.
Roadmap
- Stability and performance.
- Mobile support.
Useful extensions
- Hagrid, a flexible datagrid widget.
Contributing
PRs are welcome!
If possible, keep them small and focused. If you are planning on making a large change, please submit an issue first so we can agree on a solution.
License
This library is licensed under the BSD-3 license.
Fonts used in the examples:
- Roboto, licensed under the Apache license.
- Remix Icon, licensed under the Apache license.
Acknowledgments
- Thanks to Ghislaine Guerin for UX advice.
- Thanks to Mikko Mononen for the amazing nanovg library.