June 26, 2023 by Slint Team
Slint 1.1 Released with additional Royalty-Free License
We're thrilled to announce the release of Slint version 1.1, a powerful user interface library that simplifies the development of desktop and embedded applications. This release brings a host of exciting new features and enhancements, as well as an additional licensing option. In this blog post, we'll explore the key updates.
New Feature Highlights
Translations
We've introduced infrastructure to localize your application.
Use the new @tr()
macro in Slint code to mark strings for translation.
These strings are then extracted and processed using the gettext framework.
For more details, check out our recently released
blog post and our
documentation.
Text { text: @tr("Hello, World"); }
Enhanced Fluent Style and New Widgets
In Slint 1.1, we adapted the fluent
widget style to align with the modern Fluent2 design principles from Microsoft.
We also added two new widgets, the Switch
and the ProgressIndicator
, to our collection.
Our updated widget gallery now showcases the newly adapted Fluent2 style, as well as the two new widgets:
Accessibility with AccessKit
Accessibility is crucial for creating inclusive applications. In previous versions of Slint, to use assistive technologies like screen readers you needed to have Qt installed. Now, accessibility support is always enabled on all desktop platforms, thanks to the new AccessKit integration. AccessKit is a rich cross-platform library that provides an abstraction over operating system accessibility APIs.
OpenGL Integration
Slint's philosophy is to take care of the 2D graphical user interface. In this release we've introduced APIs that allow you to integrate 3D OpenGL rendering directly into your Slint scene. Use the
Image::from_borrowed_gl_2d_rgba_texture
(Rust)
or Image::create_from_borrowed_gl_2d_rgba_texture
(C++)
functions to create slint::Image
s from OpenGL textures.
Our OpenGL Texture example illustrates how to
use this API to render a scene with OpenGL into a texture and then blend it with widgets.
Declaration of Enums in the Slint Language
Support for declaring enums in Slint was one of the highest voted issues - by popular ❤️ count.
We've now implemented this feature. Declare enums in .slint
code,
export
them to Rust or C++, and enjoy the type safety this adds when refactoring.
Here's an example of how to define an enum in Slint:
enum Color { red, green, blue }
As an experiment, Olivier recorded himself implementing this feature. If you enjoy coding videos, check out his recording on YouTube.
Smaller, Noteworthy Features and Bug Fixes
- Enable the new
renderer-winit-skia-vulkan
feature to render to the screen using Vulkan. - Query any element in Slint for its window absolute coordinates using the
absolute-position
property. - Run Rust futures in Slint's event loop using
spawn_local()
. - Fine-tune colors using the new
mix
,with-alpha
, andtransparentize
functions on colors. - Fixed support for rendering SVGs with text.
For a complete list of all changes, check out the Changelog.
License Changes
New Royalty-free license
Based on valuable community feedback and discussions, we've extended our licensing options. Previously, Slint was available under the GPLv3 and a proprietary commercial license. With this release, we've added the new Royalty-free license as a third option. This license is free of charge for building desktop or web applications and removes the constraints of copyleft licenses.
MIT license for Examples and Tutorials
All examples, sample codes in tutorials, etc. are now available under the permissive MIT license. This allows you to freely copy, modify, and use the code in your application without being contstrained by any copyleft clauses.
Simpler Contribution License Agreement (CLA)
We took this opportunity to simplify our CLA: All contributions are now accepted under the MIT No Attribution License. This gives you the flexibility to use your code in other projects under licenses of your choice, while giving us the flexibility to adapt the licensing terms for Slint. The CLA-assistant bot automatically asks contributors to (re-)sign the CLA for each new pull request.
Upgrading
We hope that you'll enjoy upgrading to this new version. If you're using
Slint with Rust and Cargo, just run cargo update
to update
your application to the latest release. If you're using our CMake
integration with FetchContent
, update the
GIT_TAG
entry in your CMakeLists.txt
to specify
either v1.1.0
or you can also use release/1
to
automatically follow all 1.x releases.
#MadeWithSlint
We've launched https://madewithslint.com website to showcase applications made with Slint. If you want to include your Slint application, please submit a PR in the madewithslint.com GitHub repo, or submit the application information online, or send us an email.
Conclusion
Thank you to everyone who contributed, especially the numerous external contributors. Slint 1.1 is a significant update that introduces exciting new features and enhancements for UI development.
If you're new to Slint, check out our Get Started section.
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.
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.