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:
examples
dir, 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:
autoimpl
andimpl_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