Wayfire 0.11.0 announcement v0.11.0
July 24, 2026
Hello everyone! I am happy to announce the release of Wayfire 0.11.0.
Although it has been a while since the last release, this release includes many important improvements to the rendering infrastructure, fractional scaling, color management, and more.
Here is an overview of the most important changes.
Better fractional scaling PR #2955, PR #3032
Wayfire used to represent most logical geometry with integer coordinates. This works well at integer output scales, but fractional scales inevitably produce subpixel coordinates. Rounding them too early can make a surface one pixel too large, introduce unnecessary filtering, or leave effects and decorations slightly misaligned.
With this new release, Wayfire moves its geometry handling almost entirely to floating-point numbers. At the last stage of the rendering process, these numbers are carefully converted to integer coordinates and aligned with the framebuffer grid. This results in crisp text even at fractional scales for most fractional-scale-aware applications, including modern GTK4 and Qt applications, Firefox, Google Chrome, and many others. To make this work, however, Wayfire sometimes has to clip or extend surfaces to match the physical grid layout, which is why this feature is gated behind a workaround option. To enable it, use:
[workarounds]
use_native_buffer_size = true
Another notable addition is support for Xwayland HiDPI, which has long been a sore point for many Wayland compositors. Since Xwayland applications do not support the usual Wayland scaling mechanisms, Wayfire can now make Xwayland render each window at its native (physical-pixel) resolution. This results in crisp text but may require adjusting your X11 DPI and the font or scaling options in individual applications. To enable it, use:
[workarounds]
force_xwayland_scaling = true
With both options enabled, you should be able to get crisp rendering with any combination of resolution and scale.
HDR and color-managed rendering PR #3010 and PR #3023
Another major focus of this release has been color management, including per-output ICC profiles, per-surface color management, and HDR rendering.
ICC profiles can be easily enabled in the configuration file:
[output:HDMI-A-1]
icc_profile = /home/myuser/myprofile.icc
HDR can be similarly enabled for capable displays:
[output:DP-1]
hdr = true
depth = 10
HDR requires support from the renderer, GPU driver, connector, and display. The complete color-managed HDR path currently requires the Vulkan renderer, and HDR remains disabled by default.
More effects with Vulkan PR #2997
In the previous 0.10 release, Wayfire gained support for the Vulkan and Pixman renderers. In this release, Vulkan support has been extended to include a few more effects, most notably 2D and 3D view transformations (as used in Wrot and Switcher) and Wobbly.
Vulkan effects are still experimental and must be enabled at build time:
meson setup build -Dvulkan_effects=true
This build uses the wlroots-vkfx dependency and requires Vulkan development files and glslang. Not every GLES-only plugin has a Vulkan implementation yet, but this is an important step towards renderer-independent effects.
Installing external plugins PR #3076
Wayfire’s plugin ecosystem has continued to grow, but building and keeping external plugins compatible with the installed Wayfire version has largely been a manual process. The new wayfire-plugin command provides a common workflow for managing them:
wayfire-plugin install https://github.com/soreau/pixdecor
wayfire-plugin update # updates all plugins
wayfire-plugin rebuild # rebuilds all plugins for the current Wayfire installation
wayfire-plugin list
wayfire-plugin remove pixdecor
The tool builds against the Wayfire installation selected by pkg-config and installs into an isolated prefix under $XDG_DATA_HOME/wayfire/plugin-manager. Users must still ensure that the required Wayfire development files and any plugin dependencies are installed.
If the ipc and ipc-rules plugins are enabled, the wayfire-plugin tool will also automatically reload metadata files, after which you can enable the new plugin without restarting Wayfire.
Wayland protocol support
Wayfire 0.11 adds support for several protocols:
ext_image_capture_source_v1andext_image_copy_capture_manager_v1for compatibility with modern screenshot, recording, and portal implementations PR #2841.- The new
ext-toplevelplugin implementsext_foreign_toplevel_list_v1, allowing standards-based panels and task switchers to enumerate windows PR #2889. ext-data-control-v1is available alongside the older wlroots data-control protocol, giving clipboard managers a standardized interface PR #2837.- The new
security-context-v1plugin can hide privileged globals from sandboxed clients. The filtered protocols can be configured withsecurity-context-v1/privileged_protocols. - KDE AppMenu and GTK global-menu integration allow shells to associate application menus with their Wayland windows. GTK’s global-menu capability can be enabled with
gtk-shell/global_menu_bar. - Explicit synchronization via
linux-drm-syncobj-v1can be used to avoid race conditions and associated flickering, which are most noticeable on NVIDIA systems PR #3080. - The Wayfire Shell protocol has gained support for arbitrary hotspots and proximity events PR #3019.
Other additions
- Improved touch gestures PR #3070.
- Simple Tile can temporarily maximize one tiled window while retaining its position in the tiling tree. The default binding is
<super> KEY_M, and IPC clients can usesimple-tile/set-show-maximizedPR #2689. - The decoration maximize button supports full maximization with a left click, vertical maximization with a middle click, and horizontal maximization with a right click PR #3040.
- Decorations have new
font_scale,button_scale, andbutton_paddingoptions PR #3042. - Place gains
mode = pointer, which centers new windows under the pointer while keeping them inside the output workarea PR #2912. - Vswitch supports
wraparound = on_end, which traverses workspaces horizontally in desktop-number order PR #3045. - Animate can read per-view properties for the type and duration of open, close, and minimize animations, allowing IPC policy scripts to customize individual windows PR #2835.
highresandhighrrare supported for configuring outputs with the highest available mode or refresh rate in the configuration file PR #2975.- Blur’s strength can be configured with the new
alpha_thresholdandalpha_exponentoptions. Together, they define a polynomial curve that controls the blur strength based on the view’s alpha value. This is useful for excluding low-alpha parts of views, such as shadows, while still blurring the main content, which usually has higher alpha values PR #3082.
IPC additions
view-pre-mapandwindow-rules/unblock-maplet policy clients inspect and configure a window before it becomes visible PR #2835.- Plugins can publish their own events through
ipc-rulesPR #2876. output-layout-changednotifies clients about output mode, position, scale, transform, mirroring, VRR, and depth changes.wayfire/list-config-optionsenumerates all registered configuration options PR #2816.- Views expose their always-on-top state and emit
view-always-on-topchanges PR #2936. window-rules/set-view-propertyandwindow-rules/get-view-propertyprovide typed runtime properties shared between plugins and IPC clients PR #2835.
wf-shell
The shell part of the project, which includes wf-background, wf-panel, and wf-dock, is now maintained by @trigg 🎉 In recent months, wf-shell has been ported to GTK4 and gained a screen locker, a screen-sharing picker, new widgets, and improvements to existing widgets. Check it out!
Conclusion
With Wayfire 0.11, we are nearing the long-awaited 1.0 release. Our continued investment in automated testing is paying off in terms of stability, and all the new features make Wayfire suitable for a wider range of setups.
Thank you to everyone who contributed code, testing, bug reports, translations, and feedback during this release cycle. Try out Wayfire 0.11.0 and let us know what you think! You can find us at #wayfire on Matrix, Discord, and Libera.Chat.
Wayfire