Wayfire 0.7.0 announcement
Hello everyone! Today is the day that Wayfire 0.7.0 was released. There have been quite a few exciting changes since the last time I wrote here. Check all the new features and (unfortunately) the few breaking changes below:
Scale plugin (in 0.6.0)
Scale plugin is definitely the coolest new feature in Wayfire. Developed primarily by Scott Moreau and Daniel Kondor, it is now part of the main plugins. Scale lets you view all windows on the current or on all workspaces by arranging these windows in a grid, very similar to how GNOME’s Overview works. Check out the video below to see it in action:
Setting it up is quite simple - first, enable the
scale plugin either via WCM or the config file, then set up the bindings:
[scale] toggle = <super> toggle_all = <super> KEY_A interact = false # Or true
Both are activator bindings which means that you can set keys, buttons or gestures to activate the plugin. Scale also has an interactive mode, which lets you actually type in or click on the scaled windows. See the wiki for full information on the available options.
Revamped window-rules (in 0.6.0)
Another contributor, Erik Van Hamme, has completely rewritten the window-rules plugin.
window-rules lets you execute certain actions when a window is opened, maximized and on a few other events. The actions themselves can be maximizing, moving a window to a workspace or changing its alpha. For details on the exact syntax, available events and actions consult this wiki section.
Touchscreen improvements (in 0.6.0)
I have completely rewritten the touchscreen handling in Wayfire. A few bugs regarding multitouch in clients were fixed along the way, but the noticeable improvements are in the gesture handling. Gesture recognition has been split out from the main repository and resides in the wf-touch library. New features include support for swipe and pinch gestures with less than 3 fingers (especially useful for edge swipe gestures), and also support for arbitrary gestures in plugins like tap, multi-touch drag, rotate, etc.
Blur optimizations (in 0.6.0)
The last big changes which made it in the 0.6.0 release were three significant performance improvements to the blur plugin:
The blur algorithms themselves now support a much higher degrade (up to 10). The degrade parameter makes the blur algorithms scale down the background before doing computations. Because of the nature of the effect, higher degrade values actually mean both improved performance and stronger blurring!
It is now possible to specify which windows are to be blurred. This way you could for example blur your terminal and panel, but not blur other mostly opaque applications.
The damage tracking of blurred surfaces has also been improved, resulting in overall less redrawn areas when blur is active.
Breaking changes (in 0.7.0)
There have, unfortunately, been several breaking changes related to input and output devices. The section for an output is now called
output:<connector> instead of just
<connector> (e.g. renamed from
layout option in each output’s configuration has been renamed to
mode option now no longer supports specifying the refresh rate as a floating-point number.
Input devices have had a similar change. A device called
[Wacom Tablet] would now have a section named
The motivation for these changes has been that with the new syntax, they can be properly checked by
wf-config and users can now see error messages indicating the exact line where their config is wrong.
Another breaking change is the removal of the
simple animation from the Grid plugin. It should be replaced with
crossfade, which is much smoother.
New protocols support
text-inputprotocols are supported for touchscreen keyboards.
idle-inhibitprotocol is now supported so that outputs are not turned off because of inactivity when for example Firefox is open with a video playing.
wp-viewporterprotocol is supported for scaling and cropping view’s contents. It is needed for Xwayland games which attempt to change the resolution (there are still other missing pieces though), as well as for some Wayland-native clients.
Sticky windows support
Sticky windows always stay on the current workspace. The sticky state of a window can be toggled with the activator binding
wm-actions/toggle_sticky from the
There have been numerous smaller additions and bug fixes. Notable ones:
- Core has support for direct scanout, which means that some clients (fullscreen, matching output scale and transform, without any transformers) can be directly presented to the driver instead of being rendered by Wayfire. This can lead to higher performance for such clients, because the GPU does not have to copy the contents of the window to Wayfire’s buffer.
- There have been several new actions that are available via the
wm-actionsplugin. Users can now configure bindings to minimize and maximize a view or to show the desktop.
- A new
vswitchwhich makes switching to another workspace overflow when on the leftmost/rightmost/etc workspace.
follow-focusplugin has been added to
wayfire-plugins-extra, makes it possible to have window focus follow the mouse.
- It is now possible to drag a window between two outputs which have Expo and/or Scale active.
- Wayfire now uses wlroots 0.12
- Added support for hotspots (i.e triggering actions from the corners of an output), see the PR for details.
- There have been, as usual, a lot of other bug fixes and new options, check out the git log for a full list.
Changes for plugin authors (in 0.7.0)
Wayfire now has support for writing custom configuration backends. This means that Wayfire can now use gsettings as a backend, and in theory could support any config file format, should someone write the code for it.
As you can see, the last few release cycles have been quite busy. As a result, Wayfire 0.7.0 is better than ever! Try it out, and stay tuned for more updates!