Quickshell 0.3 has been released
Certainly past due, hopefully worth the wait
I’ve just tagged another Quickshell release!
Updating to 0.3 should be seamless. This update should not break your configuration.
What’s new
A bunch of fixes and new features have been added in this release. Many of these features were user contributions, which I greatly appreciate!
New API features include a networking service, polkit integration, and a number of smaller additions to services throughout the project.
More tools have been added for major configs, for redirecting crash reports and maintaining compatibility with multiple Qt and Quickshell releases. See the new Advanced Options page in the documentation for details.
The full changelog is available on the website.
What’s planned
In addition to ongoing bug fixes, the following major features are planned for the future:
API Work
A number of API reworks and further integrations are still planned for the future:
- WM API unification under the new
Quickshell.WindowManagernamespace - Support for more
Quickshell.Networkingbackends and network types - Support for more WMs via IPC and evolving Wayland standards.
- Brightness controls via DDC, /sys, etc.
- Bluetooth agent mode and better access to device profiles.
Shader compilation
Far more Quickshell configurations now use shaders. Unfortunately, the process of using a shader with QtQuick is rather painful, requiring qsb reruns and a Quickshell relaunch for every change. Full hot-reloading and internal shader compilation are planned for the future, making shader changes as seamless as QML changes.
Better image support
A long-standing request has been better support for images. This is once again near the top of the to-do list. Planned changes should greatly reduce the amount of RAM needed to display an image, simplify caching and use of remote images, and generally make their use less painful.
Library usage and LibQuickshell
When I first created Quickshell, it was primarily intended for power users with some amount of programming knowledge or the ability to configure from scratch. As Quickshell has evolved, a growing set of projects have emerged to build a full end user facing desktop with it.
To support these projects, I’m planning to introduce a new library usage mode, giving authors more control over the shell lifecycle, compilation process, and native integrations (which currently have to be done via QML modules).
Precompilation and QML Caching
Quickshell was originally designed around small configurations, so a couple major performance optimizations have been left on the table. These optimizations will mostly benefit shells with upwards of twenty thousand lines of code.
The QML engine supports caching compiled bytecode for later reuse. This can greatly reduce launch and object creation times, but it requires a strict set of guarantees around the source code, including its file structure. Quickshell does not currently conform to this structure, which means caching never takes place.
Using methods previously devised to trick the QML language server into working, it should be possible to enable QML caching, saving a significant amount of startup time in large configurations. The larger the configuration, the bigger the savings.
In addition to caching on first launch, Qt supports precompiling QML bytecode and shipping it as an object file. The benefit of this compared to first-launch caching is quite low, but we plan to make it available in the future.
Closing
Since the 0.1 release, I’ve had far less time to work on Quickshell as its popularity exploded. Because of that, my release timeline has slipped enough that people have had to wait for new features or use the master branch. I’ll try to keep a tighter release schedule in the future :)
It’s been great to see what everyone has created so far. Thanks for using Quickshell!