Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/fjvallarino/monomer
An easy to use, cross platform, GUI library for writing Haskell applications.
https://github.com/fjvallarino/monomer
cross-platform gui haskell ui
Last synced: 18 days ago
JSON representation
An easy to use, cross platform, GUI library for writing Haskell applications.
- Host: GitHub
- URL: https://github.com/fjvallarino/monomer
- Owner: fjvallarino
- License: bsd-3-clause
- Created: 2019-09-23T14:45:48.000Z (about 5 years ago)
- Default Branch: main
- Last Pushed: 2024-05-20T10:03:55.000Z (6 months ago)
- Last Synced: 2024-10-04T06:45:19.287Z (about 1 month ago)
- Topics: cross-platform, gui, haskell, ui
- Language: Haskell
- Homepage:
- Size: 7.01 MB
- Stars: 581
- Watchers: 19
- Forks: 42
- Open Issues: 35
-
Metadata Files:
- Readme: README.md
- Changelog: ChangeLog.md
- License: LICENSE
Awesome Lists containing this project
- awesome-electron-alternatives - 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](docs/tutorials/00-setup.md).
### Tutorials
Introductory tutorials are available:
- [01 - Basics](docs/tutorials/01-basics.md)
- [02 - Styling](docs/tutorials/02-styling.md)
- [03 - Life cycle](docs/tutorials/03-life-cycle.md)
- [04 - Tasks](docs/tutorials/04-tasks.md)
- [05 - Producers](docs/tutorials/05-producers.md)
- [06 - Composite](docs/tutorials/06-composite.md)
- [07 - Custom widgets](docs/tutorials/07-custom-widgets.md)
- [08 - Themes](docs/tutorials/08-themes.md)### Examples
Beyond the tutorials, a few _real world like_ examples are available:
- [Todo](docs/examples/01-todo.md)
- [Books](docs/examples/02-books.md)
- [Ticker](docs/examples/03-ticker.md)
- [Generative](docs/examples/04-generative.md)
- [Custom OpenGL](docs/examples/05-opengl.md)### Haddock
You can read the source code's documentation [here](https://hackage.haskell.org/package/monomer).
### Design decisions
In case you wonder why some choices were made, you can read
[here](docs/design-decisions.md).## 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](https://github.com/Dretch/monomer-hagrid), a flexible datagrid widget.
- [Monomer Flatpak Example](https://github.com/Dretch/monomer-flatpak-example), an example of how to package Monomer applications on Linux, using Flatpak.## 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](LICENSE).
Fonts used in the examples:
- [Roboto](https://fonts.google.com/specimen/Roboto), licensed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0).
- [Remix Icon](https://remixicon.com), licensed under the [Apache license](http://www.apache.org/licenses/LICENSE-2.0).## Acknowledgments
- Thanks to [Ghislaine Guerin](https://github.com/ghislaineguerin) for UX advice.
- Thanks to [Mikko Mononen](https://github.com/memononen) for the amazing [nanovg](https://github.com/memononen/nanovg) library.