Wayfire 0.9.0 announcement
Hello everyone! I am happy to announce the release of Wayfire 0.9.0. In the (relatively) long time since the last announcement, the focus has been on continually improving the stability of Wayfire and its plugins after the big API refactor which was finished last year. Nonetheless, there are still many cool additions in this latest release. In the following I will attempt a summary of the important changes and will go into more detail on one of Wayfire’s newest and most powerful features: the IPC socket.
Features
First, let us take a look at the user-facing changes and new features that were added in this release:
session-lock-v1
protocol PR #2237
The session-lock-v1
protocol is a new protocol used for locking a Wayland compositor session. Support for it has been added as a plugin named session-lock
and can be enabled in the wayfire.ini
file. With it, newer versions of Swaylock work on Wayfire, as well as other similar screenlockers.
Bindings following the current layout PR #2247
By using the xkb-bindings
plugin, it is possible to extend the bindings that Wayfire’s plugins provide so that they are based on xkb keysyms instead of hardware keycodes. Why this matters: hardware keycodes depend on whatever signals the kernel detects when a key is pressed on the keyboard. These do not change when you change the keyboard layout. Keysyms, on the other hand, are interpreted with the xkbcommon library and follow the current layout. This feature has been frequently requested. An example configuration:
[core]
plugins = xkb-bindings expo ...
[expo]
toggle = Mod4+e
This way, expo will always be triggered when Mod4 is pressed together with the key mapped to e
, depending on the current layout.
Animation easings PR #2202
Most animations in Wayfire have a configurable duration. They are also equipped with an easing function which makes animation appear smoother to the user. However, the hard-coded default circle
easing is not the best in all cases. Thus, in this new release of Wayfire it is possible to specify the desired animation easing function usually use the hard-coded default circle
easing for smoother animations. Now, some people might prefer to use a linear
or sigmoid
smoothing, which are also available in the backend:
[expo]
duration = 0.2s sigmoid
For testing purposes, the easeOutElastic
easing is also available. Feel free to send a PR if you would like to have even more easing functions :)
IPC
A lot of effort in this release went into improving the IPC socket support added in Wayfire 0.8.0. There are many new IPC methods available: managing headless outputs, setting configuration options, manipulating views, workspaces and workspace sets and getting notifications for various events. Of particular interest is the new Python package on PyPi which was started by @killown. The package which allows easier use of the IPC socket from user-made scripts. Check out the examples in scripts/
in the GitHub repository. And in case Python is not your thing, you might be interested in projects like DFL IPC (C++/Qt), the work-in-progress wayfire-rs and the wiki page documenting the IPC socket that Wayfire provides.
CSS theming in wf-shell
A new contributor on GitHub (@trigg, huge thanks!) has made it possible to control many aspects of wf-panel
’s appearance via custom CSS files. They are stored in ~/.config/wf-shell/css/*.css
. The directory may contain any number of CSS files, which are hot-reloaded when added, removed or edited from there. Check out the wiki page and the examples to get a feel for what is possible.
Warning: CSS theming has required many changes to the panel and some of the options’ meaning has changed. Despite the efforts to make the panel look the same as the old one out-of-the-box (with the provided default.css
), some options may need adjustment, like launchers_size
.
wayfire-plugins-extra
Scott Moreau (@soreau) has been improving and adding even more plugins to the wayfire-plugins-extra
repository. Some of the new highlights include the filters
and pixdecor
plugins, available as optional subprojects of wayfire-plugins-extra
or as standalone plugins. Another great plugin is obs
(opacity-brightness-saturation), which among other things makes it possible to implement Compiz’ trailfocus plugin as an IPC script.
Bug Fixing
There were many, many bug fixes in this release, a huge chunk of which were discovered from @killown’s fuzz tests for Wayfire. The rest of our automated test suite was also expanded, covering even more use-cases. These two approaches have helped uncover many rarely-occuring and hard-to-debug bugs.
Conclusion
That is all for now, thank you for reading this blog post until the end, and huge thanks to everyone who contributed to the project in one way or another! Try out the new Wayfire 0.9.0 release and let us know what you think.