A GUI library for writing native Haskell applications.
Monomer is an easy to use, cross platform, GUI library for writing native Haskell applications.
It provides a framework similar to the Elm Architecture, allowing the creation of GUIs using an extensible set of widgets with pure Haskell.
Please see the README on Github at https://github.com/fjvallarino/monomer#readme
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.
Project status
Although there has not been a lot of activity in the past year, the project is still active.
I may take some time to respond to issues while I work on features I want to add to Monomer.
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.