Skip to content
forked from Yandrik/kolibri

Super-lightweight Immediate-mode Embedded GUI framework, based on the awesome embedded-graphics library. Written in Rust.

License

Notifications You must be signed in to change notification settings

piedoom/kolibri

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

22 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kolibri - A GUI framework made to be as lightweight as its namesake

What is Kolibri?

Kolibri is an embedded Immediate Mode GUI mini-framework very strongly inspired by egui.

Current State

Kolibri is maturing at a fast pace. Right now, it already has everything you need for a small, basic application. It's still in alpha tho, so breaking changes are to be expected for now.

If you're interested in contributing, feel free to open an issue or a pull request.

You can also generally find me in the embedded graphics matrix channel if you have any questions.

Implemented and Planned Features

Basic Features

  • embedded-graphics based ui rendering
  • basic widgets (button, label, checkbox, ...)
  • icons
  • incremental rendering (only redraw what's actually needed)
  • optional buffer-based rendering
  • styling

Advanced (and granular)

  • layout

    • right-to-left top-to-bottom layout
    • aligns (center, right, bottom, ...)
    • side panels (right)
    • side panels (all sides)
    • layers (e.g. drawing a modal in front of the ui)
  • styling

    • Styling System
    • Premade Styles for RGB565
    • Premade Styles for other color types
    • Sub-UIs for editing styles on the fly
  • Widgets

    • Button
    • Label
    • Checkbox
    • Icon
    • Spacer
    • IconButton
    • ListBox
    • Something like a ScrollArea
    • ProgressBar
    • Toggle
    • Graph
  • performance

    • heap-less if necessary
    • small buffer to draw everything
    • incremental redraws
  • input

    • generic input system
    • smartstate-reactive basic widgets
    • custom gestures

Something missing? Add an issue with the features you believe would be good.

Sidenote: What is a Kolibri?

Kolibri is the german word for Hummingbird, which is a small bird that is very fast and agile. There is also an OS with a similar name (KolibriOS), for similar reasons: It is small and fast. This library is in no way associated with the KolibriOS project, but I do encourage you to check it out if you're interested.

Why another GUI framework?

Actually, it's in some ways the first, at least in its very, very specific niche. The embedded-graphics environment is awesome, although fairly low-level. The goal of this library is to make creating simple to somewhat-complex GUIs trivially easy. There is nothing that does this, really, at least at the time of writing this library.

What is this not?

Kolibri is not a high-end GUI framework. It is not meant to be used for creating very complicated or super nice-looking user interfaces. If that's something you're interested in, check out the rust bindings for lvgl or slint (not free for commercial use).

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

About

Super-lightweight Immediate-mode Embedded GUI framework, based on the awesome embedded-graphics library. Written in Rust.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 100.0%