Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Setup

The introduction’s three commands are the whole setup on macOS and Windows. This page is the rest: the dependency in detail, your project, Linux, and the devtools.

The dependency

kui’s crates publish to crates.io, so the dependency is one line:

[dependencies]
kui-native = "0.1.0-alpha.42"

cargo add kui-native writes that line for you. Every version is an alpha for now, and a version requirement does not hold an alpha still: "0.1.0-alpha.33" admits every later 0.1.0 alpha, so it is a floor, and Cargo.lock is what keeps the version you tested. Write "=0.1.0-alpha.33" to pin it in the manifest.

kui-native is the batteries-included crate: a window, a GPU renderer, the stock widgets and the App trait. Everything the book uses is reachable from it, and its API reference is on docs.rs. This book is the path in; docs.rs is the map once you know the names.

Versions before 0.1.0-alpha.33 are on kui’s own Forgejo registry only. A project that still names that registry (registry = "drydock9" on the dependency) should drop the key: from 0.1.0-alpha.34 on, a crate taken from there resolves its kui-* siblings from crates.io, so naming two kui-* crates from it puts two kui_cores in one build.

Your project

The book’s programs are the files under examples/rust/tutorial in the kui repository, and each is complete on the page: a chapter’s code block shows the lines it is about, and the eye icon in its corner reveals the rest of the file. Copy the whole program into src/main.rs of a project set up as above, and run it:

cargo run

Every chapter’s Run it line is spelled that way. From a checkout of the repository the same program is cargo run -p kui-native --example tutorial_01_hello, with each file’s own number and name. The testing chapter’s program carries its tests, and cargo test runs them.

Linux

The build wants pkg-config and ALSA’s headers (libasound2-dev on Debian and Ubuntu). A window loads the rest at run time: libxkbcommon for the keyboard, the X11 or Wayland client libraries, and Vulkan or EGL for the GPU. A missing one fails when the window opens, with the library’s name in the error.

macOS and Windows need nothing beyond a Rust toolchain.

The devtools

Every app can open a panel that shows the frame’s events, the node tree and the runtime’s facts. Turn it on with one call on the launcher:

kui_native::app("Hello").devtools(true).run(Hello)

or from outside, with KUI_DEVTOOLS=1 in the environment. Keep it open while you read. Chapter 12 walks through its tabs.

Building this book

The published copy is at https://kui-book.qxuken.dev. It is built with mdBook from docs/book in a checkout of the repository:

cargo install mdbook
mdbook serve docs/book --open

serve rebuilds on every save and reloads the browser.