Branch: master
Clone or download

README.md

OrbTk

Build status MIT licensed crates.io docs.rs

OrbTk 0.3.0 is under heavy development and it's not compatible to earlier releases.

The Orbital Widget Toolkit is a multi platform (G)UI toolkit for building scalable user interfaces with the programming language Rust. It's based on the Entity Component System Pattern and provides a functional-reactive API.

The main goals of OrbTk are fast peformance, easy to use and cross platform.

Redox

Features:

  • Modern Flutter, React, Redux like API
  • Uses the Entity Component System library DCES for widget and properties handling
  • Updating instead of rebuling subtrees
  • Flexible event system
  • Widget state management
  • Cross platform: Redox OS, Linux, macOS, Windows
  • CSS theming

Usage

To include OrbTk in your project, just add the dependency line to your Cargo.toml file:

orbtk = "0.2.27"

To use OrbTk 0.3, just add the dependency line to your Cargo.toml file:

orbtk = { git = https://gitlab.redox-os.org/redox-os/orbtk.git }

However you also need to have the SDL2 libraries installed on your system. The best way to do this is documented by the SDL2 crate.

Minimal Example

extern crate orbtk;
use orbtk::*;

struct MainView;

impl Widget for MainView {
    fn create() -> Template {
        Template::default()
            .as_parent_type(ParentType::Single)
            .with_child(
                Container::create()
                    .as_parent_type(ParentType::Single)
                    .with_child(TextBlock::create().with_property(Label::from("OrbTk"))),
            )
    }
}

fn main() {
    let mut application = Application::default();
    application
        .create_window()
        .with_bounds(Rect::new(0, 0, 420, 730))
        .with_title("Orbtk")
        .with_root(MainView::create())
        .build();
    application.run();
}

Additional Examples

You find the examples in the examples/ directory.

You can start the widgets example by executing the following command:

cargo run --example widgets --release

Build and run documenation

You can build and run the latest documentation y executing the following command:

cargo doc --no-deps --open

Planned features

  • Style guide
  • More default widgets
  • More examples
  • Book
  • Animations
  • Exchange views / widgets / screens on runtime
  • Split application in modules
  • Theme update
  • Support for Android, iOS and WebAssembly
  • Vulkan / OpenGL Support

Dependencies

Inspirations