Skip to content

kas-gui/kas

Repository files navigation

KAS GUI

Test Status Crates.io kas-text Docs Minimum rustc version

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

More

Crates and features

kas is a meta-package serving as the library's public API, but containing no real code. Other crates in this repo:

Significant external dependencies:

  • kas-text: complex text support
  • impl-tools: autoimpl and impl_scope (extensible) macros
  • winit: platform window integration
  • wgpu: modern accelerated graphics API

Feature flags

The kas crate enables most important features by default, excepting those requiring nightly rustc. Other crates enable fewer features by default. See Cargo.toml.

Size

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.

Copyright and Licence

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