orbtk

The Rust UI-Toolkit.

Github stars Tracking Chart

Build and test
MIT licensed
crates.io
docs.rs

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.

Features:

  • Modern lightweight API
  • Cross platform
  • Modular crates
  • Based on Entity Component System library DCES
  • Flexible event system
  • Integrated widget library
  • Custom widgets
  • Theming
  • Integrated debugging tools

Platforms

  • 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)

Planned features

  • Conformable use of async
  • More default widgets
  • More examples
  • Book
  • Animations
  • Split application in modules
  • Theme update
  • 3D context
  • More integrated debugging tools

Usage

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 = "https://github.com/redox-os/orbtk.git", branch = "develop" }

You could also check out the OrbTk template project to start a new project: https://github.com/redox-os/orbtk-template.

Minimal Example

use orbtk::prelude::*;

fn main() {
      Application::new()
        .window(, ctx, {
            Window::create()
                .title("OrbTk - minimal example")
                .position((100.0, 100.0))
                .size(420.0, 730.0)
                .child(TextBlock::create().text("OrbTk").build(ctx))
                .build(ctx)
        })
        .run();
}

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

OrbTk has also an integrated debug tools. If you want to show the bounds of all widgets (also non visual widgets) and want to see a debug print of the whole widget
tree you could run the examples as follows:

cargo run --example widgets --release --features debug

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 https://nodejs.org/dist/v10.16.3/.

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

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

Inspirations

Showcases

Contribution

If you want to help bring OrbTk further or you have feedback check our issues https://github.com/redox-os/orbtk/issues. You could also discuss with us about OrbTk on the Redox chat https://redox-os.org/community/ (join the orbital channel).

License

Licensed under MIT license (LICENSE).

Main metrics

Overview
Name With Ownerredox-os/orbtk
Primary LanguageRust
Program languageRust (Language Count: 1)
Platform
License:MIT License
所有者活动
Created At2015-12-14 19:17:13
Pushed At2022-10-18 07:27:31
Last Commit At2020-08-13 11:06:40
Release Count9
Last Release Name0.3.1-alpha4 (Posted on 2022-02-13 18:46:41)
First Release Name0.2.27 (Posted on )
用户参与
Stargazers Count3.8k
Watchers Count75
Fork Count187
Commits Count2.3k
Has Issues Enabled
Issues Count295
Issue Open Count88
Pull Requests Count163
Pull Requests Open Count0
Pull Requests Close Count39
项目设置
Has Wiki Enabled
Is Archived
Is Fork
Is Locked
Is Mirror
Is Private