Xfce Wiki

Sub domains
 

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
releng:wayland_roadmap [2024/12/27 10:28] – [Applications] gaelreleng:wayland_roadmap [2026/08/19 08:43] (current) – [Panel Plugins] gael
Line 18: Line 18:
 ===== Overall Plans ===== ===== Overall Plans =====
  
-For Xfce 4.20, the plan is, to add preliminary support to Wayland to core components without losing X11 support. This doesn't mean that by the next major release an Xfce session on Wayland will offer all existing features, but we hope it will be minimally usable. We also intend to continue refining our applications to work acceptably on Wayland (those that already work or can be made to work with low effort).+For Xfce 4.20, the plan was to add preliminary support to Wayland to core components without losing X11 support. This doesn't mean that by the next major release an Xfce session on Wayland will offer all existing features, but we hope it will be minimally usable. We also intend to continue refining our applications to work acceptably on Wayland (those that already work or can be made to work with low effort)
 + 
 +For Xfce 4.22, the stabilization work continues. Reaching X11 feature parity is not yet our target. 
 + 
 +We are now working on our own [[https://gitlab.xfce.org/xfce/xfwl4|Wayland compositor]]. It is under heavy development, somewhat usable but not stable yet. Please see [[/xfwl4_faq|its FAQ]] for further information.
  
 Check the table in the [[#component specific status]] section for details and labelled issues by group: Check the table in the [[#component specific status]] section for details and labelled issues by group:
Line 40: Line 44:
   * Do not depend on XWayland   * Do not depend on XWayland
     * No xsettings     * No xsettings
-  * Use wlroots over libmutter+  * Use smithay over wlroots and libmutter for our compositor
     * keep the possibility to run xfdesktop and xfce4-panel as separate components     * keep the possibility to run xfdesktop and xfce4-panel as separate components
     * Prevent dependency on libgnome-desktop     * Prevent dependency on libgnome-desktop
     * xfce4-panel and xfdesktop have been ported to Wayland assuming our compositor will be based on wlroots.     * xfce4-panel and xfdesktop have been ported to Wayland assuming our compositor will be based on wlroots.
-    * We plan to port xfwm4 to Wayland using wlroots but it will only be for Xfce 4.22 at best.+    * We plan to keep xfwm4 as X11-onlyfor Wayland a brand new compositor called xfwl4 was created.
   * Keep X11 compatibility for the foreseeable future   * Keep X11 compatibility for the foreseeable future
     * Nvidia support to Wayland is still problematic, one more reason to keep X11 backward compatibility (nouveau driver usually is slower)     * Nvidia support to Wayland is still problematic, one more reason to keep X11 backward compatibility (nouveau driver usually is slower)
     * Wayland compositors which were written from scratch like Weston or sway will never run as a x11 window manager. But others which started as x11 window managers such as kwin or mutter still keep their x11 window management code     * Wayland compositors which were written from scratch like Weston or sway will never run as a x11 window manager. But others which started as x11 window managers such as kwin or mutter still keep their x11 window management code
     * FreeBSD has decent [[https://docs.freebsd.org/en/books/handbook/wayland/|support]] for Wayland, OpenBSD is still [[https://www.openbsd.org/papers/eurobsdcon2023-matthieu-wayland-openbsd.pdf|working on supporting]] Wayland     * FreeBSD has decent [[https://docs.freebsd.org/en/books/handbook/wayland/|support]] for Wayland, OpenBSD is still [[https://www.openbsd.org/papers/eurobsdcon2023-matthieu-wayland-openbsd.pdf|working on supporting]] Wayland
 +    * We will archive this by having both a window manager (xfwm4/X11) and a compositor (xfwl4/wayland)
  
 ---- ----
Line 56: Line 61:
 === Core components === === Core components ===
  
-This table reflects the current status of what's released as 4.19 or git master.+This table reflects the current status of what's released as 4.21 or git master.
  
 ^ Component ^ Wayland Support ^ Remarks ^ ^ Component ^ Wayland Support ^ Remarks ^
Line 69: Line 74:
 | xfconf | yes | | | xfconf | yes | |
 | [[#xfdesktop]] | yes | See below | | [[#xfdesktop]] | yes | See below |
-[[#xfwm4]] no | |+| xfwm4 | not planned xfwl4 is its Wayland counterpart |
 | [[#xfce4-power-manager]] | yes | See below | | [[#xfce4-power-manager]] | yes | See below |
 | tumbler | yes | | | tumbler | yes | |
Line 87: Line 92:
   * Workspaces support needs an X11/Wayland abstraction, and could use the wlr-workspace-unstable-v1 protocol on Wayland.   * Workspaces support needs an X11/Wayland abstraction, and could use the wlr-workspace-unstable-v1 protocol on Wayland.
   * Listing all toplevel windows (windowlist menu, window icons on desktop) needs an X11/Wayland abstraction, and could use the wlr-foreign-toplevel-management-unstable-v1 protocol on Wayland.   * Listing all toplevel windows (windowlist menu, window icons on desktop) needs an X11/Wayland abstraction, and could use the wlr-foreign-toplevel-management-unstable-v1 protocol on Wayland.
- 
-=== xfwm4 === 
- 
-  * Unofficial port to Wayland in progress: https://github.com/adlocode/xfwm4/tree/wayland 
  
 === xfce4-settings === === xfce4-settings ===
Line 120: Line 121:
 | xfburn | yes | | | xfburn | yes | |
 | parole | yes | player window is not embedded ([[https://gitlab.xfce.org/apps/parole/-/issues/134|parole#134]]), no systray icon ([[https://gitlab.xfce.org/apps/parole/-/issues/126|parole#126]]) | | parole | yes | player window is not embedded ([[https://gitlab.xfce.org/apps/parole/-/issues/134|parole#134]]), no systray icon ([[https://gitlab.xfce.org/apps/parole/-/issues/126|parole#126]]) |
-| [[#xfce4-screenshooter]] | yes | partial, see below |+| [[#xfce4-screenshooter]] | yes | Active Window not supported |
 | xfce4-screensaver | no | Port to Wayland is essentially done [[https://gitlab.xfce.org/apps/xfce4-screensaver/-/merge_requests/28|xfce4-screensaver!28]] \\ But this requires [[https://gitlab.xfce.org/kelnos/libwlembed|libwlembed]], which is still experimental and has no release at this stage (2024-02-04) | | xfce4-screensaver | no | Port to Wayland is essentially done [[https://gitlab.xfce.org/apps/xfce4-screensaver/-/merge_requests/28|xfce4-screensaver!28]] \\ But this requires [[https://gitlab.xfce.org/kelnos/libwlembed|libwlembed]], which is still experimental and has no release at this stage (2024-02-04) |
 | xfmpc | yes | | | xfmpc | yes | |
Line 134: Line 135:
 === xfce4-screenshooter === === xfce4-screenshooter ===
  
-Wayland does not specify a native interface for the compositor for taking screenshots and it [[https://gitlab.freedesktop.org/wayland/wayland/-/issues/32|looks like]] it never will. We decided to use wlroots' [[https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/blob/master/unstable/wlr-screencopy-unstable-v1.xml|screencopy protocol]] because that'probably what our compositor will support.+Entire Screen screenshot was initially [[https://gitlab.xfce.org/apps/xfce4-screenshooter/-/merge_requests/52|implemented]] using wlroots' [[https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/blob/master/unstable/wlr-screencopy-unstable-v1.xml|screencopy protocol]]. Eventually support for ''ext-image-capture-source-v1'' and ''ext-image-copy-capture-v1'' was added. It'very likely that ''wlr-screencopy-unstable-v1'' (fallback) support will be dropped in the future.
  
-At the moment only Entire Screen screenshots are supported ([[https://gitlab.xfce.org/apps/xfce4-screenshooter/-/merge_requests/52|xfce4-screenshooter!52]]), Rectangle Selection will be implemented next but Active Window is going to be much trickier, perhaps we'll need a custom protocol for our compositor to take care of that.+Rectangle Selection was [[https://gitlab.xfce.org/apps/xfce4-screenshooter/-/merge_requests/80|implemented]] using gtk-layer-shell (''wlr_layer_shell_v1'')Active Window isn't possible with current protocols, perhaps we'll need a custom protocol for our compositor to take care of that.
  
-If we want to support compositors that don't implement the protocol above, we have to add DBus Support for [[https://github.com/flatpak/xdg-desktop-portal|org.freedesktop.portal.Screenshot]]. This however is not planned and it's unlikely we'll ever fully support other compositors.+Compositors that don't implement the protocols mentioned above will not be supported.
  
 ---- ----
Line 158: Line 159:
 ^ Component ^ Wayland Support ^ Remarks ^ ^ Component ^ Wayland Support ^ Remarks ^
 | xfce4-battery-plugin | yes | | | xfce4-battery-plugin | yes | |
-| xfce4-calculator-plugin | yes | insensitive text entry |+| xfce4-calculator-plugin | yes | |
 | xfce4-clipman-plugin | yes | [[https://gitlab.xfce.org/panel-plugins/xfce4-clipman-plugin/-/merge_requests/26|Ported]] via wlr-data-control \\ TODO: [[https://gitlab.xfce.org/panel-plugins/xfce4-clipman-plugin/-/issues/87|use status notifier instead of status icon]] | | xfce4-clipman-plugin | yes | [[https://gitlab.xfce.org/panel-plugins/xfce4-clipman-plugin/-/merge_requests/26|Ported]] via wlr-data-control \\ TODO: [[https://gitlab.xfce.org/panel-plugins/xfce4-clipman-plugin/-/issues/87|use status notifier instead of status icon]] |
 | xfce4-cpufreq-plugin | yes | | | xfce4-cpufreq-plugin | yes | |
 | xfce4-cpugraph-plugin | yes | | | xfce4-cpugraph-plugin | yes | |
 | xfce4-diskperf-plugin | yes | | | xfce4-diskperf-plugin | yes | |
-| xfce4-docklike-plugin | yes | Requires libxfce4windowing 4.19.3 | +| xfce4-docklike-plugin | yes | Requires libxfce4windowing 4.19.|
-| xfce4-embed-plugin | no | unmaintained, gtk2 |+
 | xfce4-eyes-plugin | yes | the pointer is not followed outside the panel | | xfce4-eyes-plugin | yes | the pointer is not followed outside the panel |
 | xfce4-fsguard-plugin | yes | | | xfce4-fsguard-plugin | yes | |
Line 175: Line 175:
 | xfce4-netload-plugin | yes | | | xfce4-netload-plugin | yes | |
 | xfce4-notes-plugin | yes | | | xfce4-notes-plugin | yes | |
-| xfce4-places-plugin | yes | icon issue, critical errors when removing the plugin +| xfce4-places-plugin | yes | | 
-| xfce4-pulseaudio-plugin | yes | with warnings (needs to be rechecked) |+| xfce4-pulseaudio-plugin | yes | |
 | xfce4-sample-plugin | yes | | | xfce4-sample-plugin | yes | |
 | xfce4-sensors-plugin | yes | | | xfce4-sensors-plugin | yes | |
-| xfce4-smartbookmark-plugin | yes | insensitive text entry |+| xfce4-smartbookmark-plugin | yes | |
 | xfce4-stopwatch-plugin | yes | | | xfce4-stopwatch-plugin | yes | |
 | xfce4-systemload-plugin | yes | | | xfce4-systemload-plugin | yes | |
-| xfce4-time-out-plugin | yes | coredumps on pause and critical errors when removing/re-adding the plugin |+| xfce4-time-out-plugin | yes | |
 | xfce4-timer-plugin | yes | | | xfce4-timer-plugin | yes | |
-| xfce4-verve-plugin | yes | insensitive text entry |+| xfce4-verve-plugin | yes | |
 | xfce4-wavelan-plugin | yes | | | xfce4-wavelan-plugin | yes | |
 | xfce4-weather-plugin | yes | | | xfce4-weather-plugin | yes | |
-| xfce4-whiskermenu-plugin | yes | icons issue, menu window floating +| xfce4-whiskermenu-plugin | yes | | 
-| xfce4-windowck-plugin | no | [[https://gitlab.xfce.org/panel-plugins/xfce4-windowck-plugin/-/issues/37|to be fixed]], exits early and removes itself on Wayland for now +| xfce4-windowck-plugin | yes | [[https://gitlab.xfce.org/panel-plugins/xfce4-windowck-plugin/-/issues/37|Requires libxfce4windowing 4.20.6]] | 
-| xfce4-xkb-plugin | no | Non-portable to Wayland in the near future, exits early and removes itself for now |+| xfce4-xkb-plugin | no | Non-portable to Wayland in the near future, shows a placeholder on Wayland for now |
  
 ---- ----
Line 197: Line 197:
 Regarding the version to test: master, or latest dev release would be best. If you don't test master, best add info on which version you tested. Regarding the version to test: master, or latest dev release would be best. If you don't test master, best add info on which version you tested.
  
-If you run a NVidia GPU, you will need to use the "Nouveau" driver for testing, Since the proprietary NVidia driver does not provide Wayland support. (Though some things might work in some cases)+If you run a NVidia GPU, you might need to use the "Nouveau" driver for testing. If using the proprietary NVidia driver, try version ≥ 495 which supports [[https://en.wikipedia.org/wiki/Mesa_(computer_graphics)#Generic_Buffer_Management|GBM]], however, it's not guaranteed everything will work smoothly. 
 + 
 +Originally we relied on wlroots compositors such as labwc and wayfire, which should work fine with Xfce components, but nowadays xfwl4 is our target compositor.
  
-A wlroots compositor is almost prerequisite for most core components (as well as panel plugins and some apps), at least to ensure that all features ported to Wayland are available. The default compositor is labwc, but wayfire is another wlroots compositor on which tests have generally been carried out.+<note important>Outdated information below, review is pending. Xfwl4 provides session desktop file which allows launching from a display manager.</note>
  
 To start an Xfce session on Wayland, you can run ''startxfce4 %%--%%wayland'' from a tty, which will launch xfce4-session from labwc. If you want to use wayfire instead, you'll need to run ''startxfce4 %%--%%wayland wayfire'' and add this configuration first, as wayfire doesn't have a ''%%--%%startup'' option like labwc (see ''startxfce4 %%--%%help'' for details): To start an Xfce session on Wayland, you can run ''startxfce4 %%--%%wayland'' from a tty, which will launch xfce4-session from labwc. If you want to use wayfire instead, you'll need to run ''startxfce4 %%--%%wayland wayfire'' and add this configuration first, as wayfire doesn't have a ''%%--%%startup'' option like labwc (see ''startxfce4 %%--%%help'' for details):
Line 217: Line 219:
   * [[https://frontpagelinux.com/articles/a-deep-dive-into-the-wayland-protocol-for-linux|A deep dive into the wayland protocol]]   * [[https://frontpagelinux.com/articles/a-deep-dive-into-the-wayland-protocol-for-linux|A deep dive into the wayland protocol]]
   * [[https://gitlab.xfce.org/xfce/libxfce4ui/-/commit/57410e2dffde5271443809a0dbd0280be262ba47|Check if current display is a wayland display]]   * [[https://gitlab.xfce.org/xfce/libxfce4ui/-/commit/57410e2dffde5271443809a0dbd0280be262ba47|Check if current display is a wayland display]]
 +  * [[https://alexxcons.github.io/blogpost_15.html|Xfwl4 - The roadmap for a Xfce Wayland Compositor]]
  
 [[|Back to Top]] [[|Back to Top]]