September 4, 2023 by Slint Team

Slint 1.2 Released with Enhanced Platform AbstractionBlog RSS

We're excited to introduce Slint version 1.2, which includes a wide range of new features while maintaining full backwards compatibility. This release continues our commitment to empowering developers with efficient tools for UI development. Let's take a look at the highlights.


Improved Platform API

Slint's platform API is a low-level interface that provides abstractions for window surfaces and the event loop. We initially created this API to make it possible to integrate Slint with Rust on any microcontroller with software rendering. Our built-in backends use it to make applications run on Wayland or Windows out of the box. In version 1.2, we've significantly extended the public API for Rust as well as C++ to enable new use-cases:

  • Embed a Slint UI as a plugin in foreign applications, such as digital audio workstations (DAW).
  • Implement your own backend for custom windowing systems.
  • Develop C++ applications with Slint on MCUs, as the majority of microcontrollers SDKs are based on C/C++.

Support for Espressif

The Espressif IDF framework is a C-based SDK that makes it easy to target MCUs from the ESP32 family. The SDK modularizes software development using components and provides clean hardware abstractions. ESP-IDF is a great fit for us and our customers, so we went straight ahead and built a Slint ESP-IDF component that implements our new C++ platform layer. Add this component to your project with just one command and you're all set to implement a graphical user interface:

idf.py add-dependency slint/slint
Screenshot of Slint running on the ESP32 S3 Box
Slint on ESP32-S3 Box

LinuxKMS Backend

Often the user interface on an embedded device is implemented via a single full-screen application. In such a device, a windowing system like X11 or Wayland adds no value and slows down the device startup. In Slint 1.2 we solve this with our new lightweight, experimental LinuxKMS backend. This backend provides the following benefits:

  • Renders directly to the screen with OpenGL or Vulkan using Linux's KMS/DRI infrastructure, for maximum performance.
  • Reads directly from a touch pad, touch screen, mouse, or keyboard using libinput.
  • Uses libseat to eliminate the need to run the application as root.

Other Features and Bug Fixes

  • Added ReverseModel (Rust/C++) to display a model in reverse order. Thank you Guilhem Vallat for the Rust contribution.
  • Added edited callback to SpinBox.
  • Introduced row-pointer-event callback to StandardTableView.
  • Enhanced StandardListView with current-item-changed and item-pointer-event callbacks.
  • Added orientation property to Slider.
  • Added a new walkthrough to the Slint VS code extension for a better on-boarding experience.
Screenshot of new walkthrough in VS code
Screenshot of new Slint VSCode Walkthrough

For a complete list of all changes, check out the Changelog.

Upgrading

Updating to Slint 1.2 is effortless. Rust users can run cargo update to bring their application up to date. For those using the CMake integration with FetchContent, update the GIT_TAG entry in CMakeLists.txt to v1.2.0 or release/1.2 for automatic tracking of 1.2.x releases.

#MadeWithSlint

We received new submissions on the Slint showcase website https://madewithslint.com. Thank you Danil Gulin and Vinegret43.

GPCL

Danil Gulin

GamePad Controlled Launcher
License: MIT

Screenshot of GamePad Controlled Launcher

DiSPuTe

Vinegret43

The Damn Stylish Pomodoro Timer
License: GPL 3.0

If you'd like to submit your Slint application, please create a PR in the https://github.com/slint-ui/madewithslint repo or submit the form on https://madewithslint.com.

Conclusion

Thank you to everyone who contributed, especially the numerous external contributors. Slint 1.2 marks a significant update that underlines our mission to empower developers to create innovative user interfaces, by targeting more platforms and devices, lowering system requirements, and continuously enhancing our widgets.

We invite you to explore these new features and enhancements by trying out Slint 1.2. Dive into our documentation for guides, tutorials, and examples to make the most of these exciting updates.

If you run into any issues or notice missing functionality, please don't hesitate to let us know. We'd love to get your feedback. You can get in touch with us via our GitHub site, email, or via chat on our Mattermost instance. Thank you for being a part of the Slint community ❤️.


Comments

Slint is a Rust-based toolkit for creating reactive and fluent user interfaces across a range of targets, from embedded devices with limited resources to powerful mobile devices and desktop machines. Supporting Android, Windows, Mac, Linux, and bare-metal systems, Slint features an easy-to-learn domain-specific language (DSL) that compiles into native code, optimizing for the target device's capabilities. It facilitates collaboration between designers and developers on shared projects and supports business logic development in Rust, C++, JavaScript, or Python.