Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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.

Awesome Lists containing this project

README

        

Monomer

A cross-platform GUI library for Haskell


Logo



CI badge


made with Haskell


BSD-3-Clause


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.