Wayfire 0.5.0 announcement
I am pleased to announce the release of Wayfire 0.5.0. There have been 247 commits since the last release. Here are some highlights:
Support for always-on-top views
The new wm-actions
plugin supports a key and/or a button binding to make a view stay on top of all others on its output. Most of the work was needed for the underlying mechanism, sublayers, which is much more powerful - it is a way to make views stick together, and dock them below, in the middle or above a particular layer.
Improvements in workspace switching plugins
The workspace switching plugin, vswitch
, now has a better animation which makes it more obvious that the current workspace changes.
Its counterpart for touchpad gestures vswipe
now has a free movement mode, which lets you swipe though multiple workspaces at once.
Latency improvements
There was an effort to improve the latency in Wayfire using the same strategy as weston. To achieve these optimizations Wayfire needs to know how much time it will need for redrawing the outputs. This time is, however, highly dependent on the hardware, enabled plugins, system load, etc. Thus, the core/max_render_time
option was introduced. It is only a hint for the compositor and indicates how much time Wayfire needs to reserve to redraw an output. Lower values mean that Wayfire will leave more time for clients to update themselves, so lower latency is expected. On the other hand though, very low values (for ex. 1ms) may mean that Wayfire itself will not have enough time to redraw and will then skip a frame, increasing latency.
If no value works good for you, just use -1
which disables this optimization altogether.
Another improvement in this area is the support for the presentation-time
protocol.
primary-selection
protocol
This protocol is needed for middle-click-paste to work. The implementation of the protocol is mostly done by wlroots
, so Wayfire needs just a couple of lines for it to work. However, enabling it initially caused crashes in all GTK applications. After hours of debuggingg, it turned out to be a bug in GTK3, and I had to change the ordering of globals (wayland protocol objects) so that the primary-selection
global is one of the first advertised. Phew!
output-power-management
protocol
This makes it possible for users to put outputs in power save mode from the command line, see this GitHub issue.
wayfire-plugins-extra
Thanks to the work of Scott Moreau this part of the project is going to see its first release ever! It contains a number of new plugins:
annotate
- a plugin for drawing lines and shapes on the screen as an overlay.background-view
- lets you run regular programs as a background.force-fullscreen
- scales a view so that it becomes fullscreen, especially useful for Xwayland games which do not support resizing.mag
- presents you with a magnified view of a part of the output as a separate window.water
- draws a water-ripples-like effect on your desktop, very similar to the original compiz water plugin.workspace-names
- shows the names of workspaces when switching with the various plugins, like in OpenBox.bench
,showrepaint
- show the actual framerate and the repainted regions of the screen.
Bug fixes
There have been the usual big amount of bug fixes. Be it Xwayland, input or plugins - many areas have seen small improvements.
Breaking changes
There has been some breaking changes in this release, so you may need a minute or two to upgrade your config file if you are using these options.
matcher
has been dropped
The matcher
plugin was useful for specifying a class of views based on their properties. For example, you can use the fire animation for your dmenu and chrome browser, but use the zoom animation for other windows.
This plugin has now been moved into core. Erik Van Hamme has been working on our new wf-utils
library, which provides this functionality. The syntax has changed a bit though, so consult the wiki for migration.
Some input options have been renamed
xkb_option
, xkb_rule
and disable_while_typing
are now xkb_options
, xkb_rules
and disable_touchpad_while_typing
. The change was made to match the names used in the xkbcommon
library and to make the options more descriptive.
simple-tile/key_toggle_fullscreen
This option has been removed in favor of the equivalent option in wm-actions
.
Internal work
Even if the user-facing part of Wayfire has changed a lot, the change has been even greater on the inside. I will list only the big breaking changes here:
Coordinate system simplification
Wayfire has used up to 4 different coordinate systems for rendering operations before. Now, there are only 2 - the output-local coordinate system, and the framebuffer-local one. This has necessitated some breaking changes in almost all rendering code, and a few new functions in core.
Signal rename and documentation
Some signal names have changed. This was related to an effort to improve their documentation and to make sure that naming is uniform across various signals.
Moving to wf::
Most of the public API classes and functions are now in the wf::
namespace instead of using a wf_
prefix.
wlroots 0.11
Last but not least, the latest Wayfire release is compatible with wlroots 0.11.
Thank you for reading and stay tuned for more updates!