monomer: A GUI library for writing native Haskell applications.

[ bsd3, gui, library, program ] [ Propose Tags ]

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


[Skip to Readme]

Modules

[Last Documentation]

  • Monomer
    • Monomer.Common
      • Monomer.Common.BasicTypes
      • Monomer.Common.Lens
    • Monomer.Core
      • Monomer.Core.Combinators
      • Monomer.Core.FromFractional
      • Monomer.Core.Lens
      • Monomer.Core.SizeReq
      • Monomer.Core.Style
      • Monomer.Core.StyleTypes
      • Monomer.Core.StyleUtil
      • Monomer.Core.ThemeTypes
      • Themes
        • Monomer.Core.Themes.BaseTheme
        • Monomer.Core.Themes.SampleThemes
      • Monomer.Core.Util
      • Monomer.Core.WidgetTypes
    • Monomer.Event
      • Monomer.Event.Core
      • Monomer.Event.Keyboard
      • Monomer.Event.Lens
      • Monomer.Event.Types
      • Monomer.Event.Util
    • Monomer.Graphics
      • Monomer.Graphics.ColorTable
      • Monomer.Graphics.FFI
      • Monomer.Graphics.FontManager
      • Monomer.Graphics.Lens
      • Monomer.Graphics.NanoVGRenderer
      • Monomer.Graphics.RemixIcon
      • Monomer.Graphics.Text
      • Monomer.Graphics.Types
      • Monomer.Graphics.Util
    • Monomer.Helper
    • Monomer.Lens
    • Monomer.Main
      • Monomer.Main.Core
      • Monomer.Main.Handlers
      • Monomer.Main.Lens
      • Monomer.Main.Platform
      • Monomer.Main.Types
      • Monomer.Main.UserUtil
      • Monomer.Main.Util
      • Monomer.Main.WidgetTask
    • Monomer.Widgets
      • Monomer.Widgets.Animation
        • Monomer.Widgets.Animation.Fade
        • Monomer.Widgets.Animation.Shake
        • Monomer.Widgets.Animation.Slide
        • Monomer.Widgets.Animation.Transform
        • Monomer.Widgets.Animation.Types
        • Monomer.Widgets.Animation.Wipe
        • Monomer.Widgets.Animation.Zoom
      • Monomer.Widgets.Composite
      • Monomer.Widgets.Container
      • Containers
        • Monomer.Widgets.Containers.Alert
        • Base
          • Monomer.Widgets.Containers.Base.LabeledItem
        • Monomer.Widgets.Containers.Box
        • Monomer.Widgets.Containers.BoxShadow
        • Monomer.Widgets.Containers.Confirm
        • Monomer.Widgets.Containers.Draggable
        • Monomer.Widgets.Containers.DropTarget
        • Monomer.Widgets.Containers.Dropdown
        • Monomer.Widgets.Containers.Grid
        • Monomer.Widgets.Containers.Keystroke
        • Monomer.Widgets.Containers.Popup
        • Monomer.Widgets.Containers.Scroll
        • Monomer.Widgets.Containers.SelectList
        • Monomer.Widgets.Containers.Split
        • Monomer.Widgets.Containers.Stack
        • Monomer.Widgets.Containers.ThemeSwitch
        • Monomer.Widgets.Containers.Tooltip
        • Monomer.Widgets.Containers.ZStack
      • Monomer.Widgets.Single
      • Singles
        • Base
          • Monomer.Widgets.Singles.Base.InputField
        • Monomer.Widgets.Singles.Button
        • Monomer.Widgets.Singles.Checkbox
        • Monomer.Widgets.Singles.ColorPicker
        • Monomer.Widgets.Singles.ColorPopup
        • Monomer.Widgets.Singles.DateField
        • Monomer.Widgets.Singles.Dial
        • Monomer.Widgets.Singles.ExternalLink
        • Monomer.Widgets.Singles.Icon
        • Monomer.Widgets.Singles.Image
        • Monomer.Widgets.Singles.Label
        • Monomer.Widgets.Singles.LabeledCheckbox
        • Monomer.Widgets.Singles.LabeledRadio
        • Monomer.Widgets.Singles.NumericField
        • Monomer.Widgets.Singles.OptionButton
        • Monomer.Widgets.Singles.Radio
        • Monomer.Widgets.Singles.SeparatorLine
        • Monomer.Widgets.Singles.Slider
        • Monomer.Widgets.Singles.Spacer
        • Monomer.Widgets.Singles.TextArea
        • Monomer.Widgets.Singles.TextDropdown
        • Monomer.Widgets.Singles.TextField
        • Monomer.Widgets.Singles.TimeField
        • Monomer.Widgets.Singles.ToggleButton
      • Monomer.Widgets.Util
        • Monomer.Widgets.Util.Drawing
        • Monomer.Widgets.Util.Focus
        • Monomer.Widgets.Util.Hover
        • Monomer.Widgets.Util.Keyboard
        • Monomer.Widgets.Util.Lens
        • Monomer.Widgets.Util.Parser
        • Monomer.Widgets.Util.Style
        • Monomer.Widgets.Util.Text
        • Monomer.Widgets.Util.Theme
        • Monomer.Widgets.Util.Types
        • Monomer.Widgets.Util.Widget

Flags

Manual Flags

NameDescriptionDefault
examplesDisabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 1.0.0.0, 1.0.0.1, 1.0.0.2, 1.0.0.3, 1.1.0.0, 1.1.1.0, 1.2.0.0, 1.3.0.0, 1.4.0.0, 1.4.1.0, 1.5.0.0, 1.5.1.0, 1.6.0.0
Change log ChangeLog.md
Dependencies aeson (>=1.4 && <2.3), async (>=2.1 && <2.3), attoparsec (>=0.12 && <0.15), base (>=4.11 && <5), bytestring (>=0.10 && <0.12), bytestring-to-vector (>=0.3 && <0.4), containers (>=0.5.11 && <0.7), data-default (>=0.5 && <0.8), exceptions (>=0.10 && <0.11), extra (>=1.6 && <1.9), foreign-store (>=0.2 && <1.0), formatting (>=6.0 && <8.0), http-client (>=0.6 && <0.9), JuicyPixels (>=3.2.9 && <3.5), lens (>=4.16 && <6), monomer, mtl (>=2.1 && <2.4), nanovg (>=0.8.1 && <1.0), OpenGLRaw (>=3.3 && <3.4), process (>=1.6 && <1.7), random (>=1.1 && <1.3), sdl2 (>=2.5.0 && <2.6), stm (>=2.5 && <2.6), text (>=1.2 && <2.1), text-show (>=3.7 && <3.12), time (>=1.8 && <1.16), transformers (>=0.5 && <0.7), vector (>=0.12 && <0.14), websockets (>=0.12 && <0.13), wreq (>=0.5.2 && <0.6), wuss (>=1.1 && <2.3) [details]
License BSD-3-Clause
Copyright 2018 Francisco Vallarino
Author Francisco Vallarino
Maintainer fjvallarino@gmail.com
Category GUI
Home page https://github.com/fjvallarino/monomer#readme
Bug tracker https://github.com/fjvallarino/monomer/issues
Source repo head: git clone https://github.com/fjvallarino/monomer
Uploaded by fjvallarino at 2023-12-05T11:57:27Z
Distributions NixOS:1.5.1.0, Stackage:1.6.0.0
Reverse Dependencies 2 direct, 0 indirect [details]
Executables tutorial, todo, ticker, opengl, generative, dev-test-app, books
Downloads 1865 total (37 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
All reported builds failed as of 2023-12-05 [all 2 reports]

Readme for monomer-1.6.0.0

[back to package description]

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.

Tutorials

Introductory tutorials are available:

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:

Acknowledgments