Cargo Features
[dependencies]
slint = { version = "1.16.1", default-features = false, features = ["compat-1-2", "compat-1-0", "std", "gettext", "libm", "log", "serde", "software-renderer-systemfonts", "software-renderer-path", "unsafe-single-threaded", "accessibility", "raw-window-handle-06", "image-default-formats", "live-preview", "backend-qt", "backend-winit", "backend-winit-x11", "backend-winit-wayland", "backend-default", "renderer-winit-femtovg", "renderer-winit-skia", "renderer-winit-skia-opengl", "renderer-winit-skia-vulkan", "renderer-winit-software", "renderer-femtovg", "renderer-femtovg-wgpu", "renderer-skia", "renderer-skia-opengl", "renderer-skia-vulkan", "renderer-software", "backend-linuxkms", "backend-linuxkms-noseat", "backend-android-activity-06", "backend-android-activity-05", "unstable-wgpu-27", "unstable-wgpu-28", "unstable-winit-030", "unstable-libinput-09", "unstable-fontique-08", "document-features"] }
- default = accessibility, backend-default, compat-1-2, renderer-femtovg, renderer-software, std
-
These default features are set whenever
slintis added withoutsomewhere in the dependency tree.default-features = false - compat-1-2 default compat-1-0?
-
Mandatory feature: This feature is required to keep the compatibility with Slint 1.2 Newer patch version may put current functionality behind a new feature that would be enabled by default only if this feature was added. More info in this blog post
- compat-1-0 = compat-1-2, renderer-software
- std default backend-linuxkms? backend-linuxkms-noseat? backend-qt? backend-winit? backend-winit-wayland? backend-winit-x11? renderer-femtovg renderer-femtovg-wgpu? renderer-skia? renderer-skia-opengl? renderer-skia-vulkan?
-
Enable use of the Rust standard library.
Enables std of i-slint-core and optional i-slint-renderer-software
- gettext
-
Enable the translations using gettext
the
@tr(...)code from .slint files will be transformed into call todgettextwith the crate name as domain nametranslations must be enabled with the
init_translations!macroEnables gettext-rs of i-slint-core
Affects
private_unstable_api::init_translations… - libm
-
This feature enables floating point arithmetic emulation using the libm crate. Use this in MCU environments where the processor does not support floating point arithmetic.
Enables libm of i-slint-core and optional i-slint-renderer-software
- log
-
If enabled, calls of
debug()in.slintfiles use to the [log::debug!()] macro of the log crate instead of justprintln!().Enables log
- serde
-
Implement the
serde::Serializeandserde::Deserializefor some of the base types such asSharedStringandSharedVector.Enables serde of i-slint-core
- software-renderer-systemfonts = renderer-software
-
Deprecated feature, this is now automatically enabled when the
renderer-softwareandstdfeatures are enabled - software-renderer-path
-
Enable support for Path element rendering with the software renderer. This is implicitly enabled by the
stdfeature, but can be enabled withoutstdif you want to use the software renderer in a#![no_std]environment and need support for Path elements.Enables path of i-slint-renderer-software
- unsafe-single-threaded
-
Slint uses internally some
thread_localstate.When the
stdfeature is enabled, Slint can usestd::thread_local!, but when in a#![no_std]environment, we need a replacement. Using this feature, Slint will just use static variable disregarding Rust's Send and Sync safetySafety : You must ensure that there is only one single thread that call into the Slint API
Enables unsafe-single-threaded of i-slint-core
- accessibility default
-
Enable integration with operating system provided accessibility APIs
Enabling this feature will try to expose the tree of UI elements to OS provided accessibility APIs to support screen readers and other assistive technologies.Enables accessibility of i-slint-backend-selector
- raw-window-handle-06
-
Enable integration with raw-window-handle version 0.6. This provides a [
Window::window_handle()] function that returns a struct that implements HasWindowHandle and HasDisplayHandle implementation.Enables raw-window-handle, raw-window-handle-06 of i-slint-backend-selector
- image-default-formats
-
Enable the default image formats from the
imagecrate, to support additional image formats inImage::load_from_pathand@image-url. When this feature is disabled, only PNG and JPEG are supported. When enabled, the following image formats are supported: AVIF, BMP, DDS, Farbfeld, GIF, HDR, ICO, JPEG, EXR, PNG, PNM, QOI, TGA, TIFF, WebP.Enables image-default-formats of i-slint-core
- live-preview
-
Enable the live preview feature
Enable this feature to reload the .slint files at runtime and reload it whenever the files are modified on disk. For this feature to work, it's also required to set the
SLINT_LIVE_PREVIEWenvironment variable during application compilation.This is a feature for debugging and development. It's not recommended to add this feature to your Cargo.toml. Instead, use the
--featurescommand line argument like so when building your app:SLINT_LIVE_PREVIEW=1 cargo build --features slint/live-previewEnables slint-interpreter
- backend-qt = i-slint-backend-qt, std
-
Backends
Slint needs a backend that will act as liaison between Slint and the OS. By default, Slint will use the Winit backend with FemtoVG. You can also enable the Qt backend with the
backend-qtfeature. If you want to use a different backend, disable the default feature and re-enable the desired backend. It is also possible to use Slint without a backend if you provide the platform abstraction yourself with [platform::set_platform()].If you enable the Winit backend, you need to also include a renderer.
renderer-femtovgis the default renderer.It is also possible to select the backend and renderer at runtime when several are enabled, using the
SLINT_BACKENDenvironment variable.SLINT_BACKEND=Qtselects the Qt backendSLINT_BACKEND=winitselects the winit backendSLINT_BACKEND=winit-femtovgselects the winit backend with the FemtoVG rendererSLINT_BACKEND=winit-skiaselects the winit backend with the skia rendererSLINT_BACKEND=winit-softwareselects the winit backend with the software renderer
If the selected backend is not available, the default will be used.
Here are the cargo features controlling the backend:
The Qt backend feature uses Qt for the windowing system integration and rendering. This backend also provides the
nativestyle. It requires Qt 5.15 or later to be installed. If Qt is not installed, the backend will not be operationalEnables backend-qt of i-slint-backend-selector
- backend-winit unstable-winit-030? = std
-
The winit crate is used for the event loop and windowing system integration. It supports Windows, macOS, web browsers, X11 and Wayland. X11 and wayland are only available when compiling for Linux or other Unix-like operating systems. With this feature, both X11 and Wayland are supported. For a smaller build, omit this feature and select one of the other specific
backend-winit-XXfeatures.Enables backend-winit of i-slint-backend-selector
- backend-winit-x11 = std
-
Simliar to
backend-winitthis enables the winit based event loop but only with support for the X Window System on Unix.Enables backend-winit-x11 of i-slint-backend-selector
- backend-winit-wayland = std
-
Simliar to
backend-winitthis enables the winit based event loop but only with support for the Wayland window system on Unix.Enables backend-winit-wayland of i-slint-backend-selector
- backend-default default
-
Alias to a backend and renderer that depends on the platform.
Enables i-slint-backend-selector
- renderer-winit-femtovg = renderer-femtovg
-
deprecated aliases
- renderer-winit-skia = renderer-skia
- renderer-winit-skia-opengl = renderer-skia-opengl
- renderer-winit-skia-vulkan = renderer-skia-vulkan
- renderer-winit-software = renderer-software
- renderer-femtovg default renderer-winit-femtovg? = std
-
Render using the FemtoVG crate.
Enables i-slint-renderer-femtovg, renderer-femtovg of i-slint-backend-selector
Affects
slint::platform.femtovg_renderer… - renderer-femtovg-wgpu = std
-
Enables renderer-femtovg-wgpu of i-slint-backend-selector, wgpu of i-slint-renderer-femtovg
Affects
slint::platform.femtovg_renderer… - renderer-skia renderer-winit-skia? = std
-
Render using Skia.
Enables renderer-skia of i-slint-backend-selector
- renderer-skia-opengl renderer-winit-skia-opengl? = std
-
Same as
renderer-skia, but Skia will always use OpenGL. Note: This is not supported on iOS. Userenderer-skiaon iOS to enable Meta based rendering.Enables renderer-skia-opengl of i-slint-backend-selector
- renderer-skia-vulkan renderer-winit-skia-vulkan? = std
-
Same as
renderer-skia, but Skia will always use Vulkan.Enables renderer-skia-vulkan of i-slint-backend-selector
- renderer-software default compat-1-0? renderer-winit-software? software-renderer-systemfonts?
-
Render using the software renderer.
Enables i-slint-renderer-software, renderer-software of i-slint-backend-selector
Affects
slint::platform.software_renderer… - backend-linuxkms = std
-
KMS with Vulkan or EGL and libinput on Linux are used to render the application in full screen mode, without any windowing system. Requires libseat. If you don't have libseat, select
backend-linuxkms-noseatinstead.Enables backend-linuxkms of i-slint-backend-selector
- backend-linuxkms-noseat = std
-
KMS with Vulkan or EGL and libinput on Linux are used to render the application in full screen mode, without any windowing system.
Enables backend-linuxkms-noseat of i-slint-backend-selector
- backend-android-activity-06
-
Use the backend based on the android-activity crate. (Using it's native activity feature)
Enables aa-06 and native-activity of i-slint-backend-android-activity, backend-android-activity of i-slint-backend-selector
Affects
slint::android… - backend-android-activity-05
-
Deprecated Use previous version of android-activity. This is mutually exclusive with
backend-android-activity-06.Enables aa-05 and native-activity of i-slint-backend-android-activity
Affects
slint::android… - unstable-wgpu-27
-
Enable support for WGPU based rendering and expose WGPU based APIs based on WGPU version 27.x.
APIs guarded with this feature are NOT subject to the usual Slint API stability guarantees, because WGPU releases new major versions frequently. This feature as well as the APIs changed or removed in future minor releases of Slint, likely to be replaced by a feature with a similar name but the WGPU version suffix being bumped.
To avoid unintended compilation failures, we recommend to use the tilde requirement in your
Cargo.tomlwhen enabling this feature:slint = { version = "~1.16", features = ["unstable-wgpu-27"] }Enables wgpu ^27, unstable-wgpu-27 of i-slint-backend-selector, i-slint-core, and optional i-slint-backend-android-activity
Affects
slint::wgpu_27… - unstable-wgpu-28
-
Enable support for WGPU based rendering and expose WGPU based APIs based on WGPU version 28.x.
APIs guarded with this feature are NOT subject to the usual Slint API stability guarantees, because WGPU releases new major versions frequently. This feature as well as the APIs changed or removed in future minor releases of Slint, likely to be replaced by a feature with a similar name but the WGPU version suffix being bumped.
To avoid unintended compilation failures, we recommend to use the tilde requirement in your
Cargo.tomlwhen enabling this feature:slint = { version = "~1.16", features = ["unstable-wgpu-28"] }Enables wgpu ^28, unstable-wgpu-28 of i-slint-backend-selector, i-slint-core, and optional i-slint-backend-android-activity
Affects
slint::wgpu_28… - unstable-winit-030 = backend-winit
-
APIs guarded with this feature are NOT subject to the usual Slint API stability guarantees, because winit releases new major versions more frequently than Slint. This feature as well as the APIs changed or removed in future minor releases of Slint, likely to be replaced by a feature with a similar name but the winit version suffix being bumped.
To avoid unintended compilation failures, we recommend to use the tilde requirement in your
Cargo.tomlwhen enabling this feature:slint = { version = "~1.16", features = ["unstable-winit-030"] }Enables i-slint-backend-winit, unstable-winit-030 of i-slint-backend-selector
Affects
slint::winit_030… - unstable-libinput-09
-
Enable support for exposing libinput related APIs in the LinuxKMS backend.
APIs guarded with this feature are NOT subject to the usual Slint API stability guarantees. This feature as well as the APIs changed or removed in future minor releases of Slint, likely to be replaced by a feature with a similar name but the input version suffix being bumped.
To avoid unintended compilation failures, we recommend to use the tilde requirement in your
Cargo.tomlwhen enabling this feature:slint = { version = "~1.16", features = ["unstable-libinput-09"] }Enables unstable-libinput-09 of i-slint-backend-selector
- unstable-fontique-08
-
Enable support for exposing fontique related APIs.
APIs guarded with this feature are NOT subject to the usual Slint API stability guarantees. This feature as well as the APIs changed or removed in future minor releases of Slint, likely to be replaced by a feature with a similar name but the fontique version suffix being bumped.
To avoid unintended compilation failures, we recommend to use the tilde requirement in your
Cargo.tomlwhen enabling this feature:slint = { version = "~1.16", features = ["unstable-fontique-08"] }Enables shared-fontique of i-slint-common
Affects
slint::fontique_08…
Features from optional dependencies
In crates that don't use the dep: syntax, optional dependencies automatically become Cargo features. These features may have been created by mistake, and this functionality may be removed in the future.
- document-features implicit feature
-
Enables document-features
document-features:
Extract documentation for the feature flags from comments in Cargo.toml
- i-slint-backend-qt linux backend-qt?
- i-slint-backend-android-activity android backend-android-activity-05? backend-android-activity-06?