The Rust UI-Toolkit
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Florian Blasius 30e6ec2073 Update. 2 months ago
.vscode Fix horizontal orientation of ListView. 2 months ago
crates Fix publish. 2 months ago
examples Refactor context code. 2 months ago
res Wip stack fix. 2 months ago
resources DCES update. 2 months ago
src Finish alpha channel. Refactor names. 2 months ago
.gitignore Apply clippy lints and refactor loops for easier understanding 3 months ago
.gitlab-ci.yml Release 0.3.1-alpha1 2 months ago Release 0.3.1-alpha1 2 months ago
Cargo.lock Update. 2 months ago
Cargo.toml Update. 2 months ago
LICENSE Add first rev of orbtk 4 years ago
Node.toml Work on web version of canvas. 3 months ago Update. 2 months ago


Build status MIT licensed

OrbTk 0.3.* is under heavy development and is not compatible with 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 like API.

The main goals of OrbTk are speed, ease of use, and being cross platform.



  • Modern lightweight API
  • Uses the Entity Component System library DCES for widget and properties handling
  • Updating instead of rebuilding sub-trees
  • Flexible event system
  • Widget state management
  • Cross platform: Redox OS, Linux, macOS, Windows
  • CSS theming


  • Redox OS (native | cargo-node)
  • Linux (native | cargo-node)
  • macOS (native | cargo-node)
  • Windows (native | cargo-node)
  • openBSD (not tested, but should work)
  • Web (cargo-node)
  • Android (native planned after 0.3 | cargo-node)
  • iOS (native planned after 0.3 | cargo-node planned after 0.3)
  • Ubuntu Touch (native planned after 0.3 | cargo-node planned for 0.3)


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

orbtk = "0.3.1-alpha1"

To use the latest development version of OrbTk, just add the dependency line to your Cargo.toml file:

orbtk = { git = "", branch = "develop" }

Minimal Example

use orbtk::prelude::*;

fn main() {
        .window(|ctx| {
                .title("OrbTk - minimal example")
                .position((100.0, 100.0))
                .size(420.0, 730.0)

Run Examples

You can find examples in the examples/ directory.

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

cargo run --example widgets --release

Run Examples with cargo-node

To run the examples on as browser, electron or cordova app you have to install

cargo install -f cargo-node

Before you could use cargo node you have to install npm version 6.9.0. It is included in the Node.js version 10.16.3. You could download it from

Rust’s cargo is presumed. All other dependencies of cargo node will be installed automatic.

Start examples

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

  • Run as browser app:
cargo node run --target browser --example widgets
  • Run as electron app:
cargo node run --target electron --example widgets
  • Run as cordova app on android:
cargo node run --target android --example widgets

Build and run documentation

You can build and run the latest documentation by 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, Ubuntu Touch and WebAssembly
  • 3D support

Sub Crates

  • api: base api elements of OrbTk e.g. widget and application parts
  • css-engine: parse and read values from a css file
  • proc-macros: procedural helper macros
  • render: cross platform 2D/3D render library
  • shell: cross platform window and event handling
  • theme: OrbTks default theme (light and dark)
  • tree: tree structure based on DCES
  • utils: helper structs and traits
  • widgets: base widget library




If you want to help bring OrbTk further or you have feedback check our issue board You could also discuss with us about OrbTk on the Redox chat (join the orbital channel).


Licensed under MIT license (LICENSE).