A flexible, grid-centric GUI framework for building dynamic user interfaces in Löve2D games and applications.
LUIS (Love UI System) is a graphical user interface framework built for the Löve2D game engine. It enables developers to create dynamic, grid-centric, and layered user interfaces for games and applications, providing tools for layout management, theming, and event handling.
Löve2D game developers and Lua programmers who need a flexible, modular UI system for their projects, especially those requiring custom widgets and responsive layouts.
Developers choose LUIS for its zero-dependency core, modular widget system, and grid-based layout flexibility, allowing lightweight customization and extensibility without being tied to pre-built components.
LUIS (Love UI System) is a flexible graphical user interface (GUI) framework built on top of the Löve2D game framework. LUIS provides developers with the tools to create dynamic, grid-centric, layered user interfaces for games and applications.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
The core library has zero dependencies, allowing developers to build lightweight custom UI systems without bloat, as highlighted in the README's feature list.
Uses a grid system and FlexContainers for easy arrangement and nesting, demonstrated in examples where containers can be dragged, resized, and auto-arranged.
Offers global theme customization and per-widget overrides, enabling consistent or individualized styling without restructuring code.
Modular design allows adding or removing widgets, and supports custom widgets and decorators like GlassmorphismDecorator, as shown in the widget decorators section.
Known problems include DropBox and FlexContainer dropdown navigation not working fully with gamepad analog sticks, limiting accessibility for controller-heavy games.
Changing themes requires manual adjustment of font sizes in TextInput widgets, as admitted in the known problems, adding maintenance overhead.
Some widgets like TextInputMultiLine lack setConfig/getConfig methods, indicating missing functionality that developers might need for state persistence.