KAS, the toolKit Abstraction System, is a general-purpose GUI toolkit. Goals of the project are:
Status of the project is alpha: progress has been made towards all
goals, with signficiant limitations to features and goofy graphics.
Portability is somewhat limited, requiring nightly Rust and [wgpu] support.
Crates:
kas: the core of the GUI library, providing most interfaces and logic
along with a selection of common widgetskas-macros: a helper crate providing the procedural macros used by kaskas-theme: theming support for KAS (API plus a couple of standard themes,
at least for now)kas-wgpu: provides windowing via [winit] and rendering via [wgpu]kas-widgets: (unrealised) - providing extra widgetskas-graphs: (unrealised) - plotting widgetsA user depends on kas to write their complete UI specification, and then
pastes a few lines of code to initialise kas_wgpu::Toolkit, choose a theme,
add window(s), and run the UI.
For details, see the Examples README.

For the most part, Cargo should take care of dependencies, but note:
Next, clone the repository and run the examples as follows:
git clone https://github.com/dhardy/kas.git
cd kas
cargo test
cd kas-wgpu
cargo test
cargo run --example gallery
This crate has the following feature flags:
internal_doc: turns on some extra documentation intended for internal
usage but not for end users. (This only affects documentation.)nightly: enables new_uninit feature to support cloning of
Box<dyn Handler> objectswinit: adds compatibility code for winit's event and geometry types.
Compatibility with other event sources is currently incomplete (TODO).stack_dst: some compatibility impls (see kas-theme's documentation)The
The KAS library is published under the terms of the Apache License, Version 2.0.
You may obtain a copy of this licence from the