Wayfire 0.4.0 is here!
I am pleased to announce the next release of Wayfire. As usual, there has been a lot of work and many bug fixes. Here is a summary of the important changes.
Decoration buttons support
Wayfire’s decoration plugin finally got basic support for close/maximize/minimize buttons on Xwayland views and native wayland clients which request these via the xdg-decoration
protocol. The focus has been on functionality, not on the looks so not everybody will find those beautiful. Regardless, should you need them, here are a few configuration options:
[decoration]
font = serif
title_height = 30
border_size = 4
button_order = minimize maximize close
active_color = #222222aa
inactive_color = #33333333dd
You can read more details about those here: https://github.com/WayfireWM/wayfire/wiki/Configuration#decoration
Animation support for context menus & tooltips
Up to now, context menus and tooltips (aka xdg_popup
surfaces) have been treated the same as subsurfaces. This means they could not be animated separately from the main
view. Now, they are completely separate and you can enable animations for them with the following:
[animate]
fade_enabled_for = (type is unmanaged || (type is x-or && focuseable is false))
The important bit here is type is unmanaged
which is an expression which describes “unmanaged” views, which are currently exactly xdg_popup
s. The (type is x-or && focuseable is false)
part matches Xwayland override-redirect views which are not focuseable - usually Xwayland popups, tooltips, etc.
Make sure to add the matcher
plugin before the animate
plugin in the window list for this to work (This is a temporary solution, since matcher
will soon be merged into core).
Improved dialogue handling
Transient windows (dialogues like file chooser) also got their fair share of attention. One important fix was that now dialogues do not cause freezes with the simple-tile
plugin. You can also choose whether dialogues stick together with their parent (as in GNOME) or float separately. Note that in both cases the dialogue always stays on top of the parent window, as it should. Sticking windows together is made possible by the join-view plugin from wayfire-plugins-extra.
Installation scripts
Since Wayfire consists of multiple components, building it requires cloning, compiling and installing multiple components, as well as installing configuration files. To make the process easier, I have written a few scripts here, with the help of which installation of Wayfire should be as easy as writing a single command:
./install.sh --prefix /opt/wayfire --stream 0.4.0
and then running it with
./start_wayfire.sh
If the script encounters error along the way (for example, missing dependencies), you can restart it, and it will try to continue the build from where it stopped last time. In case you want to start from scratch, there is the --clean
option.
This script may not work on non-standard distributions such as NixOS, but it should work on “common” ones like Fedora, Ubuntu, Arch, Debian and their derivatives.
Documentation
User alexherbo2 has volunteered to help with the documentation of Wayfire. You can find his excellent work at Wayfire wiki. It contains documentation for all options from the main Wayfire repository, along with screenshots and many tips on how to configure different third-party programs to work together with Wayfire.
wf-config changes
The small library which Wayfire uses for configuration has been rewritten. The syntax of the config file itself hasn’t changed, but the new wf-config
can check option types when reading from the config file, and for integers and doubles in can also check whether the config value is between a specified minimum and maximum value. This information is used for displaying proper error messages when the option value is invalid. There is also support for setting custom default option values via a system configuration file.
WCM
Scott Moreau has continued working on WCM, our configuration GUI. Notable improvements are:
- Support for grabbing key- and button bindings directly. Instead of searching for the proper names in
linux/input-event-codes.h
, you can just press the combo and WCM will parse it for you. - Long descriptions of config options. Hovering an option gives you a detailed description of what this option does.
- Support for gesture options.
Miscallaneous
- Expo plugin now supports different key bindings to directly go to a specific workspace instead of using the mouse
window-rules
plugin now supportsset alpha
command to automatically set transparency for apps as soon as they are started- Performance optimizations for blur and other transformers.
- Mouse cursor is now drawn when mirroring outputs.
- There is an option in
[idle]
to disable DPMS when a fullscreen window is active. - Bug/Crash fixes
All in all, Wayfire is steadily going towards a 1.0 release, although there will certainly be a few more alpha/beta releases before that.