June 26, 2023 by Slint Team

Slint 1.1 Released with additional Royalty-Free LicenseBlog RSS

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:

Widget Gallery in Fluent Design

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::Images 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.

OpenGL 3D Scene rendered into a Slint scene 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, and transparentize 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.


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.