Zenolith is my attempt at a retained-mode, platform-agnostic, zig-native GUI engine.
Warning: Zenolith is in an extremely early stage! Many important features such as text editing are not yet implemented. Expect breaking changes!
Zenolith is mirrored on GitHub to make it easier to discover, however, this mirror is read-only! Do not open issues or pull requests on GitHub! All development happens on MZTE Git.
Pull requests are always welcome! If you'd like to fix a bug, improve documentation or implement a feature on the TODO list below, go ahead! If you'd like to suggest a new feature or design change, please open an issue first to discuss it!
All commits must follow Conventional Commits!
- Painter API
- Rectangles
- Textures
- Text
- Multi-Color chunks
- Multi-Font chunks
- Triangles
- Matrix Transformations?
- Drawing of partial widgets
- stencils?
- Widgets
- Box (FlowBox-like algorithm)
- Button
- Label
- Word Wrapping
- Character Wrapping
- Ellipsization
- Text Edit
- Single Line
- Multi Line
- Tabbed Pane
- Split Pane
- Scrolled Pane
- Focus System
- Theming
- Built-in themes
- Layout overflow handling
- Logo
- Treevents (Tree-Bound, downwards events)
- Backevents (Tree-Bound, upwards events)
- Platform events (Platform event loop events)
- Wrap Backevents
- Attreebutes (Tree-Bound, inhereted widget properties)
- Documentation
- In-Code
- Book
- Examples
- CI/CD
- SDL2 Backend
- Mach Backend
- TUI Backend
- WASM Backend
- Lazy rendering of subtrees