FULE: Functional UI Layout Engine

[ bsd3, gui, library ] [ Propose Tags ]
Versions [RSS] 0.3.0, 0.3.1,
Change log CHANGELOG.md
Dependencies base (>=4.7 && <5), containers (>=0.6.5 && <0.7), deepseq (>=1.4.6 && <1.5), mtl (>=2.2.2 && <2.4), transformers (>=0.5.6 && <0.7) [details]
License BSD-3-Clause
Copyright 2022-2024 Paul Schnapp
Author Paul Schnapp
Maintainer paul.schnapp@gmail.com
Category GUI
Home page https://github.com/pschnapp/FULE#readme
Bug tracker https://github.com/pschnapp/FULE/issues
Source repo head: git clone https://github.com/pschnapp/FULE
Uploaded by pschnapp at 2024-05-10T21:01:16Z
Downloads 89 total (14 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2024-05-10 [all 1 reports]

Readme for FULE-

[back to package description]


The Functional UI Layout Engine (FULE - pronounced "fuel") is an experimental Haskell library for positioning UI elements on-screen. The layout will react dynamically to changes in window-size or manipulations by the user, but it is up to you to wire these events from the GUI framework to the FULE layout and to draw the components themselves on the screen.

Check out the usage documentation and examples for more information, or if curious you can dive into the theory behind it.

The osabe project can be referenced as an example use of the library -- it is for this appliction that FULE was written in the first place.

If you have any questions or issues feel free to contact me. I'd also be interested to hear about any uses of this library.


  • Pre-defined containers (more to come!)
  • Easy centering of content
  • Dynamic, responsive layout
  • Flat data-structures
  • Monad-friendly API



  • A Quartered container
  • A Table container


  • Removable/replaceable components -- updatable Layout
  • An Oversized container (for scrolling)
  • Have Positioned take effect within an Unreckoned container