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/02/09 08:18] – [Overall Plans] alexxconsreleng:wayland_roadmap [2024/03/18 19:42] (current) – [Native Wayland] andreldm
Line 43: Line 43:
     * 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 considering our compositor will be based on wlroots. There is also an [[https://github.com/adlocode/xfwm4/tree/wayland|unofficial port of xfwm4]] in progress.+    * xfce4-panel and xfdesktop have been ported to Wayland assuming our compositor will be based on wlroots. 
 +    * There is also an [[https://github.com/adlocode/xfwm4/tree/wayland|unofficial port of xfwm4]] in progress.
   * 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
-    * We do not have the resources to maintain our own Wayland compositor +    * 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 provides https://hikari.acmelabs.space, not sure what is the situation for OpenBSD (possibly libinput missing?)+
  
 ---- ----
Line 65: Line 65:
 | xfce4-appfinder | yes | | | xfce4-appfinder | yes | |
 | [[#xfce4-panel]] | yes | See below | | [[#xfce4-panel]] | yes | See below |
-| xfce4-session | no | | |+| xfce4-session | yes See [[https://gitlab.xfce.org/xfce/xfce4-session/-/merge_requests/49|xfce4-session!49]] about limitations and how to use it |
 | [[#xfce4-settings]] | yes | See below | | [[#xfce4-settings]] | yes | See below |
 | xfconf | yes | | | xfconf | yes | |
Line 78: Line 78:
 === xfce4-panel === === xfce4-panel ===
  
-  * Port to Wayland done: https://gitlab.xfce.org/xfce/xfce4-panel/-/merge_requests/103+  * Port to Wayland done: [[https://gitlab.xfce.org/xfce/xfce4-panel/-/merge_requests/103|xfce4-panel!103]]
     * Wlroots-based, targeted compositors: Labwc, Wayfire     * Wlroots-based, targeted compositors: Labwc, Wayfire
   * On Wayland the panel cannot use GtkSocket/GtkPlug any more to run plugins as external (separate processes). Initially, to advance in the porting of other features, it is enough to run them as internal (same process as the panel, so the crash of a plugin causes the panel to crash). If we want to get this back "natively" afterwards, it seems that we'll have to make the panel a Wayland compositor to some extent ([[https://wayland.freedesktop.org/docs/html/ch02.html#sect-Compositors-Embedding-Compositor|Embedding Compositor]], see also [[https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/74|Allow embedding foreign wl_surfaces]]). For the moment the socket/plug structure has been reproduced on Wayland using the layer-shell protocol and D-Bus, which, although not native, has the merit of simplicity and of reusing what exists (more details [[https://mail.xfce.org/pipermail/xfce4-dev/2022-October/033092.html|here]]).   * On Wayland the panel cannot use GtkSocket/GtkPlug any more to run plugins as external (separate processes). Initially, to advance in the porting of other features, it is enough to run them as internal (same process as the panel, so the crash of a plugin causes the panel to crash). If we want to get this back "natively" afterwards, it seems that we'll have to make the panel a Wayland compositor to some extent ([[https://wayland.freedesktop.org/docs/html/ch02.html#sect-Compositors-Embedding-Compositor|Embedding Compositor]], see also [[https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/74|Allow embedding foreign wl_surfaces]]). For the moment the socket/plug structure has been reproduced on Wayland using the layer-shell protocol and D-Bus, which, although not native, has the merit of simplicity and of reusing what exists (more details [[https://mail.xfce.org/pipermail/xfce4-dev/2022-October/033092.html|here]]).
Line 84: Line 84:
 === xfdesktop === === xfdesktop ===
  
-  * Port to Wayland done: https://gitlab.xfce.org/xfce/xfdesktop/-/merge_requests/43+  * Port to Wayland done: [[https://gitlab.xfce.org/xfce/xfdesktop/-/merge_requests/43|xfdesktop!43]]
   * 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.
Line 100: Line 100:
 === xfce4-power-manager === === xfce4-power-manager ===
  
-  * Port to Wayland done: https://gitlab.xfce.org/xfce/xfce4-power-manager/-/merge_requests/54+  * Port to Wayland done: [[https://gitlab.xfce.org/xfce/xfce4-power-manager/-/merge_requests/54|xfce4-power-manager!54]]
   * The essential features of user inactivity monitoring and display power management have been restored via protocols [[https://wayland.app/protocols/ext-idle-notify-v1|ext-idle-notify]] and [[https://wayland.app/protocols/wlr-output-power-management-unstable-v1|wlr-output-power-management]].   * The essential features of user inactivity monitoring and display power management have been restored via protocols [[https://wayland.app/protocols/ext-idle-notify-v1|ext-idle-notify]] and [[https://wayland.app/protocols/wlr-output-power-management-unstable-v1|wlr-output-power-management]].
   * There's no real counterpart to brightness management (the [[https://wayland.app/protocols/wlr-gamma-control-unstable-v1|wlr-gamma-control]] protocol offers similar functionality in appearance, but in fact has nothing to do with power saving), but the existing Polkit implementation works independently of the windowing environment.   * There's no real counterpart to brightness management (the [[https://wayland.app/protocols/wlr-gamma-control-unstable-v1|wlr-gamma-control]] protocol offers similar functionality in appearance, but in fact has nothing to do with power saving), but the existing Polkit implementation works independently of the windowing environment.
Line 110: Line 110:
  
 ^ Component ^ Wayland Support ^ Remarks ^ ^ Component ^ Wayland Support ^ Remarks ^
-| xfce4-terminal | yes | drop-down requires layer-shell to work properly[[https://gitlab.xfce.org/apps/xfce4-terminal/-/merge_requests/72|!72]] |+| xfce4-terminal | yes | drop-down requires layer-shell to work properly [[https://gitlab.xfce.org/apps/xfce4-terminal/-/merge_requests/72|xfce4-terminal!72]] |
 | mousepad | yes | | | mousepad | yes | |
 | [[#xfce4-notifyd]] | yes | | | [[#xfce4-notifyd]] | yes | |
 | xfdashboard | no | crash on startup | | xfdashboard | no | crash on startup |
-| xfce4-taskmanager | yes | no libwnck (appicons, [[https://gitlab.xfce.org/apps/xfce4-taskmanager/-/issues/75|#75]]), no "identify window", no systray icon ([[https://gitlab.xfce.org/apps/xfce4-taskmanager/-/issues/78|#78]]) |+| xfce4-taskmanager | yes | no libwnck (appicons, [[https://gitlab.xfce.org/apps/xfce4-taskmanager/-/issues/75|xfce4-taskmanager#75]]), no "identify window", no systray icon ([[https://gitlab.xfce.org/apps/xfce4-taskmanager/-/issues/78|xfce4-taskmanager#78]]) |
 | xfce4-mixer | yes | | | xfce4-mixer | yes | |
 | ristretto | yes | | | ristretto | yes | |
 | catfish | yes | | | catfish | yes | |
 | xfburn | yes | | | xfburn | yes | |
-| parole | yes | no systray icon ([[https://gitlab.xfce.org/apps/parole/-/issues/126|#126]]) | +| parole | yes | no systray icon ([[https://gitlab.xfce.org/apps/parole/-/issues/126|parole#126]]) | 
-| [[#xfce4-screenshooter]] | no crash after region is selected ([[https://gitlab.xfce.org/apps/xfce4-screenshooter/-/issues/46|#46]]), see below |+| [[#xfce4-screenshooter]] | yes partial, see below |
 | 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 134:
 === 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.+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's probably what our compositor will support.
  
-So for xfce4-screenshooter there are the following options: +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. 
-  * Add support for the wlroots screencopy protocol + 
-    * [[https://gitlab.freedesktop.org/wlroots/wlr-protocols/-/blob/master/unstable/wlr-screencopy-unstable-v1.xml|wlr-screencopy-unstable-v1.xml]] +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.
-    * Our compositor will very likely support this protocol +
-  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]], namely: +
-    * [[https://gitlab.gnome.org/GNOME/xdg-desktop-portal-gnome|xdg-desktop-portal-gnome]] +
-    * [[https://github.com/KDE/xdg-desktop-portal-kde|xdg-desktop-portal-kde]]+
  
 ---- ----
Line 158: Line 154:
 ==== Panel Plugins ==== ==== Panel Plugins ====
  
-See details in the **[[#xfce4-panel]]** section about how to run external plugins on Wayland. At first, "works" below simply means "doesn't crash", even after some elementary manipulations (eventually). It does not mean that everything works like on X11+See details in the **[[#xfce4-panel]]** section about how to run external plugins on Wayland. At first, "yes" below simply means "doesn't crash", even after some elementary manipulations (eventually). It does not mean that everything works like on X11.
- +
-The tests below were performed on 2022-10-12 by building from git-master for each plugin.+
  
 ^ Component ^ Wayland Support ^ Remarks ^ ^ Component ^ Wayland Support ^ Remarks ^
Line 168: Line 162:
 | xfce4-cpufreq-plugin | yes | | | xfce4-cpufreq-plugin | yes | |
 | xfce4-cpugraph-plugin | yes | | | xfce4-cpugraph-plugin | yes | |
-| xfce4-datetime-plugin | yes | | 
 | xfce4-diskperf-plugin | yes | | | xfce4-diskperf-plugin | yes | |
-| xfce4-docklike-plugin | no crashes (Libwnck) |+| xfce4-docklike-plugin | yes Requires libxfce4windowing 4.19.3 |
 | xfce4-embed-plugin | no | unmaintained, gtk2 | | 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 |
Line 187: Line 180:
 | xfce4-sensors-plugin | yes | | | xfce4-sensors-plugin | yes | |
 | xfce4-smartbookmark-plugin | yes | insensitive text entry | | xfce4-smartbookmark-plugin | yes | insensitive text entry |
-| xfce4-statusnotifier-plugin | no | crashes (gdk_x11 code, merged in systray plugin since 4.15.4 anyway) | 
 | xfce4-stopwatch-plugin | yes | | | xfce4-stopwatch-plugin | yes | |
 | xfce4-systemload-plugin | yes | | | xfce4-systemload-plugin | yes | |
Line 218: Line 210:
   * If run in a terminal emulator, make sure at least the component to test isn't already running in your X11 session (e.g Thunar as daemon)   * If run in a terminal emulator, make sure at least the component to test isn't already running in your X11 session (e.g Thunar as daemon)
   * Open a terminal in the Weston session and start the component which is to be tested   * Open a terminal in the Weston session and start the component which is to be tested
 +  * For Wayfire you need to run ''startxfce4 %%--%%wayland'' from a tty (or the equivalent via a Display Manager), but before that add the following configuration: <file ini ~/.config/wayfire.ini>
 +[autostart]
 +session = xfce4-session
 +</file>
 +
  
 ---- ----