
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 like API.
The main goals of OrbTk are fast performance, easy to use and cross platform.

Features:
- 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
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.
Use OrbTk with cairo
If you want to use OrbTk with cairo (recommanded) you have to install cairo graphics. Otherwise you have to build OrbTk with the "plain" feature.
- With Ubuntu, please to type
sudo apt-get install libcairo2-dev
in your console. - With macOS and homebrew, please to type
brew install cairo
in your console. - With macOS and macports, please to type
sudo port install cairo
in your console.
Minimal Example
use orbtk::*;
fn main() {
let mut application = Application::default();
application
.create_window()
.bounds(Bounds::new(100.0, 100.0, 420.0, 730.0))
.title("OrbTk - minimal example")
.debug_flag(false)
.build(TextBlock::create().text("OrbTk"));
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 documentation
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, Ubuntu Touch and WebAssembly
- Vulkan / OpenGL Support
Dependencies
- OrbGL: 2D/3D drawing
- OrbClient: window creation, window events
- OrbFont: font rendering
- OrbImage: image loading
- DCES: Entity Component System
- rust-cssparser: CSS parsing