KAS is a stateful, pure-Rust GUI toolkit supporting:
- Mostly declarative UI descriptions
- Stateful widgets (e.g. selection range or a pure-UI counter)
- Virtual scrolling (list or matrix), including support for external data sources
- Theme abstraction including theme-driven animations and sizing
- Multiple renderer backends
- Integrated i18n support
- Accessibility tool integration
- Platform integration: persistent configuration, theme discovery, external menus, IME
- Most of the basics you'd expect: complex text, fractional scaling, automatic margins
- Extremely fast, monolithic binaries
- Docs: Tutorials, Wiki: Getting started
- Prose: Blog, Design
- API docs
- Examples:
examplesdir, kas-gui/7guis.
kas is a meta-package serving as the library's public API, but containing no real code. Other crates in this repo:
- kas-core: the core library
- kas-widgets: the main widget library
- kas-view: view widgets supporting virtual scrolling
- kas-resvg: extra widgets over resvg
- kas-dylib: helper crate to support dynamic linking
- kas-macros: proc-macro crate
Significant external dependencies:
- kas-text: complex text support
- impl-tools:
autoimplandimpl_scope(extensible) macros - winit: platform window integration
- wgpu: modern accelerated graphics API
The kas crate enables most important features by default, excepting those
requiring nightly rustc. Other crates enable fewer features by default.
See Cargo.toml.
To reduce binary size, add this to your Cargo.toml:
[profile.release]
strip = true
opt-level = "z"You might also consider using feature dynamic if wishing to ship multiple
binaries with shared libraries (Rust's libstd and libkas_dylib); note
however that these are not ABI-stable.
The COPYRIGHT file includes a list of contributors who claim copyright on this project. This list may be incomplete; new contributors may optionally add themselves to this list.
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 LICENSE file or on the following webpage: https://www.apache.org/licenses/LICENSE-2.0