Using Wayland: Difference between revisions
(→Sway) |
m (→Misc Apps) |
||
(80 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
The goal of this page is to relate experiences using Wayland working implementations, software replacement from the X11 world and so on. |
The goal of this page is to relate experiences using Wayland working implementations, software replacement from the X11 world and so on. |
||
Duck: |
Duck: please note I'm a former AwesomeWM user thus I'm not looking into major desktop implementations like GNOME or KDE but I'm trying to mix interesting pieces to fit my needs better. You can have a look at my configuration [https://vcs-git-viewer.duckcorp.org/?p=people/duck/duckland-infra.git;a=tree in my repository] (Ansible rules). |
||
== Compositors == |
== Compositors == |
||
Line 12: | Line 12: | ||
=== [https://swaywm.org/ Sway] === |
=== [https://swaywm.org/ Sway] === |
||
(updated for 1.8.1) |
|||
Status: very active project, |
Status: very active project, created a wlroots framework to share with other compositors, version 1.1+ is usable with some glitches, seamless xwayland integration |
||
Packaging: in Debian with wlroots and swaybg |
|||
Problems: |
|||
** DRM issues when switching VT or when going out from idle (DPMS off and on) |
|||
Notable problems: |
|||
Packaging: not ready in Debian yet but [https://salsa.debian.org/swaywm-team WIP in Salsa]: wlroots builds fine, Sway 1.0 final needs a patch (TODO: document this) |
|||
* [https://github.com/swaywm/sway/issues/2425 dialogs hidden under their parent] (annoying with specific applications relying on child windows but most don't and there is a workaround) |
|||
* contextual popup or menu not working yet (affects tray and IME completion selection, see below for IME solutions) |
|||
=== [http://way-cooler.org/ Way Cooler] (spiritual successor of AwesomeWM) === |
|||
Tools: |
|||
* swaybar (display workspaces, current window title, tray, time, CPU infos…) |
|||
Status: was being rewritten on top of wlroots but was [http://way-cooler.org/blog/2020/01/09/way-cooler-post-mortem.html unfortunately abandoned] at the beginning of 2020. I need some time to cope with the sadness and remove this entry. |
|||
** integrated with sway |
|||
** Status: works fine but tray support is limited (icon may be missing, contextual menu not working, WIP) |
|||
== Tools == |
|||
** not packaged in Debian |
|||
* [https://github.com/Alexays/Waybar.git Waybar] (more fancy bar) |
|||
=== Display Manager === |
|||
** Status: tested only a short time, tray working better than swaybar but contextual menu currently displayed in the middle of the screen, passing TZ to clock widget is not yet implemented (but requested) |
|||
* swaylock (lock screen) |
|||
* [https://sr.ht/~kennylevinsen/greetd/ greetd]: {{wayland}} |
|||
** packaged in Debian, [https://ftp-master.debian.org/new/wlgreet_0.4.1-1.html wlgreet packaging is in the NEW queue] |
|||
**: Status: tested with wlgreet and works fine. Keyboard input stops working if switching VT back and forth; need restart if that happens. |
|||
* lightdm: {{x11}} |
|||
** packaged in Debian |
** packaged in Debian |
||
** Status: works fine to run Wayland sessions but runs on X11 itself. [https://github.com/canonical/lightdm/issues/63 Input devices might be missing in the Wayland session] but switching VT back and forth fixes the situation. [https://github.com/swaywm/sway/issues/6655 Problems with libseat >= 0.5], possibly fixed in version >=1.28 but did not test it (now using greetd). |
|||
** Status: works fine |
|||
* swayidle |
|||
=== Bars === |
|||
* swaybar: {{wayland}} (display workspaces, current window title, tray, time, CPU infos…) |
|||
** integrated with sway, can use various commands to display stuff (i3status works fine and is packaged in Debian) |
|||
** Status: works fine but [https://github.com/swaywm/sway/issues/3799 tray support is limited] (icon may be missing, contextual menu not working, WIP) |
|||
* [https://github.com/Alexays/Waybar.git Waybar]: {{wayland}} (more fancy bar) |
|||
** packaged in Debian |
** packaged in Debian |
||
** Status: tested only a short time, tray working better than swaybar, [https://github.com/Alexays/Waybar/issues/668 the date module is not compiled]) |
|||
** Status: works fine but stopped using it because of the DRM issues listed above |
|||
=== Session === |
|||
=== [http://way-cooler.org/ Way Cooler] (spiritual successor of AwesomeWM) === |
|||
* swaylock: {{wayland}} (lock screen) |
|||
Status: being rewritten on top of wlroots, far from being usage yet (as of early 2019) |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
* swayidle: {{wayland}} (run custom actions on idle and back from idle) |
|||
== Tools == |
|||
** packaged in Debian |
|||
** Status: works fine and handle various events |
|||
=== Application Menu Runner === |
=== Application Menu Runner === |
||
* wofi: {{wayland}} |
|||
* j4-dmenu-desktop + [https://github.com/Cloudef/bemenu.git bemenu]: |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
** Usage: wofi --term=x-terminal-emulator |
|||
* [https://git.sr.ht/~adnano/wmenu wmenu]: {{wayland}} |
|||
** not packaged in Debian |
|||
** Status: untested |
|||
* j4-dmenu-desktop + [https://github.com/Cloudef/bemenu.git bemenu]: {{x11}} {{wayland}} |
|||
** j4-dmenu-desktop only is packaged in Debian |
** j4-dmenu-desktop only is packaged in Debian |
||
** Status: works fine |
** Status: works fine |
||
** Usage: j4-dmenu-desktop --dmenu='bemenu --list 10 --wrap --ignorecase --no-overlap --prompt "Run:" --fn "pango:DejaVu Sans Mono 12"' --term=x-terminal-emulator |
** Usage: j4-dmenu-desktop --dmenu='bemenu --list 10 --wrap --ignorecase --no-overlap --prompt "Run:" --fn "pango:DejaVu Sans Mono 12"' --term=x-terminal-emulator |
||
* dmenu: |
|||
* dmenu: {{x11}} |
|||
** packaged in Debian (suckless-tools) |
** packaged in Debian (suckless-tools) |
||
** Status: works fine but impossible to switch back to it if you loose focus (need to kill it in a term) |
** Status: works fine but impossible to switch back to it if you loose focus (need to kill it in a term) |
||
** Usage: dmenu_path | dmenu -p "Run:" -l 10 | xargs swaymsg exec |
** Usage: dmenu_path | dmenu -p "Run:" -l 10 | xargs swaymsg exec |
||
=== Notifications === |
=== Notifications / Screen Overlay === |
||
* [https://github.com/emersion/mako.git mako]: |
* [https://github.com/emersion/mako.git mako]: {{wayland}} (notifications): |
||
** |
** packaged in Debian (mako-notifier) |
||
** works fine |
** works fine |
||
* xfce4-notifyd: |
|||
* wob: {{wayland}} (progressbar) |
|||
** packaged in Debian |
** packaged in Debian |
||
** Status: works fine |
** Status: works fine |
||
* xfce4-notifyd: {{x11}} (notifications): |
|||
** packaged in Debian |
|||
** Status: works fine but display in the middle of the screen thus not very practical |
|||
=== Input Method === |
=== Input Method === |
||
* fcitx5: {{x11}} {{wayland}} |
|||
* fcitx4: untouched config from X11 works but completion menu is not displayed |
|||
** has Wayland support |
|||
* fcitx5: has Wayland support but only the core is packaged in Debian and I was not able to make it work yet |
|||
** packaged in Debian (now includes the [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=974894 mozc binding] patch) |
|||
** Status: works fine with both Wayland and X11 applications |
|||
* fcitx4: {{x11}} |
|||
** packaged in Debian |
|||
** Status: untouched config from X11 works but completion menu may not be displayed; running ''fcitx-autostart'' fixed it (you may need to ''killall fcitx'' first) |
|||
* ibus: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: ibus-wayland is available and was switched to using a newer version of the wayland input protocol (see [https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=905001 Debian#905001] and linked upstream BR) but Sway use an even newer version (and this one only); I was not able to make completion work at the time but the bug is closed and I guess it's working now but I have not tested it. |
|||
So here are the various protocols: |
|||
* wl_input_method: [https://gitlab.freedesktop.org/wayland/weston/commit/b57f472c84592b0ec64c39d2e707892e58587aea seems it was an old draft added to Weston but not part of the Wayland protocols] |
|||
* zwp_input_method_v1: current Wayland unstable protocol, implemented by Weston, ibus-wayland and fcitx5 |
|||
* zwp_input_method_v2: [https://patchwork.freedesktop.org/patch/254850/ WIP to be integrated in Wayland unstable protocols], implemented by Wlroots/Sway |
|||
=== Terminal === |
|||
* xfce4-terminal: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
* terminator: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine (with Sway >=1.1) |
|||
* foot: {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
* sakura: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
* alacritty: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine but IME completion popup not working [https://github.com/alacritty/alacritty/issues/1101 despite support being implemented] (setting ''WINIT_UNIX_BACKEND=x11'' is a workaround) |
|||
* terminology: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine but could not make IME support work despite the recommended ''ECORE_IMF_MODULE'' and ''XMODIFIERS'' settings |
|||
* termite: {{warning}} [https://github.com/thestinger/termite/#termite-is-obsoleted-by-alacritty abandoned in favor of alacritty] |
|||
** not packaged in Debian and requires a patched libvte |
|||
** Status: works fine |
|||
=== Screen Capture === |
=== Screen Capture === |
||
* grim (screenshot) |
* grim: {{wayland}} (screenshot) (there is a wrapper called grimshot too to make things easy) |
||
** packaged in Debian |
** packaged in Debian |
||
** Status: works fine |
** Status: works fine |
||
* wf-recorder: {{wayland}} (screen recorder) |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
* xdg-desktop-portal-wlr: {{wayland}} (screenshot, screencast, and possibly remote-desktop) |
|||
** packaged in Debian |
|||
** Status: [https://github.com/emersion/xdg-desktop-portal-wlr/wiki/Screencast-Compatibility experimental], requires pipewire >=0.3 and FF >=84; tested screencast with FF and GMeet, it worked but takes a few seconds to initialize and sometimes hang and it may not be possible to get it to work again withotu restarting Sway; currently [https://github.com/emersion/xdg-desktop-portal-wlr/issues/107 sharing a specific window or output] is not yet possible. |
|||
=== Screen Settings === |
|||
* light: (unfortunately orphaned since the 8th of March, 2023, let's hope someone picks up the maintenance) |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
* brightnessctl: |
|||
** packaged in Debian (brightness-udev is needed to be usable as non-root) |
|||
** Status: works fine |
|||
* [https://github.com/mischw/wl-gammactl wl-gammactl]: {{wayland}} |
|||
** not packaged in Debian |
|||
** Status: works fine |
|||
=== Browser === |
|||
* firefox: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine on XWayland, works fine on Wayland too but [https://bugzilla.mozilla.org/show_bug.cgi?id=635134 officially it is still WIP] |
|||
* chromium: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine on XWayland, [https://bugs.chromium.org/p/chromium/issues/detail?id=578890 native Wayland support is WIP] |
|||
=== Electron Apps === |
|||
The [https://www.electronjs.org/ Electron]framework is based on Chromium/Ozone which now has a Wayland backend. [https://github.com/electron/electron/issues/10915 Support in Electron] came in version 12 which enables Ozone. Detection of Wayland environment is not automatic yet but on recent builds there is the `--ozone-platform-hint=auto` option to enable autodetection (I could not make it work yet though). Currently [https://github.com/electron/electron/issues/27522 Electron now supports client-side decorations] (but on tiling compositors like Sway you won't see them by default though). Unfortunately [https://github.com/electron/electron/issues/33662 IME are not working yet]. |
|||
To enable Wayland on the following applications you need to add the following options on the command line (or edit you .desktop file): --enable-features=WaylandWindowDecorations --ozone-platform=wayland |
|||
* signal-desktop: {{x11}} {{wayland}} |
|||
** not packaged in Debian but upstream provides a package for Ubuntu that works on Debian |
|||
** Status: works fine but IME support missing on Wayland |
|||
* [https://vscodium.com/ VSCodium]: {{x11}} {{wayland}} (OpenSource distribution of Visual Studio Code without telemetry and tracking) |
|||
** not packaged in Debian but upstream provides a working package |
|||
** Status: works fine but IME support missing on Wayland |
|||
=== Misc Apps === |
|||
* Emacs: {{x11}} |
|||
** packaged in Debian |
|||
** Status: works fine on XWayland, since [https://emacshorrors.com/posts/psa-emacs-is-not-a-proper-gtk-application.html it is not a real GTK application] Wayland support is a tricky problem but there's [https://lwn.net/Articles/843896/ hope of a real GTK port] which would bring Wayland support |
|||
* Libreoffice: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine on XWayland, native Wayland support if using the GTK3 backend (with the extra ''libreoffice-gtk3'' package) and working well too |
|||
* [https://github.com/Blub/netevent netevent]: (Input-Event device cloning utility) |
|||
** use case: if you wish to control several machines with the same keyboard and mouse, like with a KVM switch, then you can use devices from one to control others and switch machine using a special key |
|||
** not packaged in Debian but materials provided upstream (needs [https://github.com/Blub/netevent/pull/15 this update though]) |
|||
** Status: works fine |
|||
* Thunderbird: {{x11}} {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine on XWayland, works ok now on Wayland but [https://bugzilla.mozilla.org/show_bug.cgi?id=635134 officially it is still WIP] |
|||
* Wine: {{x11}} |
|||
** packaged in Debian but lags behind a lot, my tests are using the packages made by the Wine project |
|||
** Status: works fine on XWayland with sometimes a few quirks; apps hang if run in non-native resolution or when switching workspace (but windowed using the full screen size often works; using a virtual desktop is also a working option). There is WIP to add upstream Wayland support and it's making quite a lot of progress (see [https://www.winehq.org/pipermail/wine-devel/2020-December/178575.html 2020 report], [https://www.winehq.org/pipermail/wine-devel/2021-February/181325.html 2021 report] and [https://www.winehq.org/mailman3/hyperkitty/list/wine-devel@winehq.org/thread/5GQWFP7MC6GQTL2KLAV6F6RUMOE3QULI/ 2022 report] |
|||
* wl-clipboard: {{wayland}} |
|||
** packaged in Debian |
|||
** Status: works fine |
|||
== Workarounds == |
|||
=== GUI Frameworks === |
|||
GTK uses GDK to draw and support for Wayland exists but [https://wiki.gnome.org/Initiatives/Wayland/GTK%2B a few things are missing] thus it is not enabled by default. Other frameworks do not always enable Wayland by default depending on distro and version. |
|||
Currently this works fine: |
|||
# ensure GUI frameworks use Wayland |
|||
# breaks a few apps or behaviors (Chromium, Emacs…) |
|||
export GDK_BACKEND=wayland |
|||
export CLUTTER_BACKEND=wayland |
|||
export QT_QPA_PLATFORM=wayland-egl |
|||
# breaks a few apps or behaviors (Unity…) |
|||
#export SDL_VIDEODRIVER=wayland |
|||
export ELM_DISPLAY=wl |
|||
# enable Wayland on Mozilla apps |
|||
export MOZ_ENABLE_WAYLAND=1 |
|||
export MOZ_WEBRENDER=1 |
|||
=== IME Settings === |
|||
''im-config'' sets various environment variable for various frameworks and X11 compat. You may also wish to set the ''GLFW_IM_MODULE'' too as a few applications use this framework. |
|||
The complete set with the recommended ''fcitx'' method (version 5 is better but the config is unchanged) (you might do without ''im-config'' altogether): |
|||
export XMODIFIERS="@im=fcitx" |
|||
export GTK_IM_MODULE="fcitx" |
|||
export QT_IM_MODULE="fcitx" |
|||
export CLUTTER_IM_MODULE="xim" |
|||
export GLFW_IM_MODULE="fcitx" |
|||
=== Java Applications === |
|||
Set ''_JAVA_AWT_WM_NONREPARENTING=1'' in your environment to fix behavior with menus and ''always on top'' issues (and maybe others). |
|||
== Readings == |
|||
* [https://wiki.archlinux.org/index.php/Wayland Wayland (Arch Linux documentation)] |
|||
* [https://www.phoronix.com/scan.php?page=news_item&px=Vulkan-1.1-Wayland-Compositor With Vulkan 1.1 It's Technically Possible To Write A Pure Wayland Compositor] |
Latest revision as of 03:49, 10 July 2023
Introduction
The goal of this page is to relate experiences using Wayland working implementations, software replacement from the X11 world and so on.
Duck: please note I'm a former AwesomeWM user thus I'm not looking into major desktop implementations like GNOME or KDE but I'm trying to mix interesting pieces to fit my needs better. You can have a look at my configuration in my repository (Ansible rules).
Compositors
There's many Wayland compositor projects around but a lot are very experimental and many even already abandoned.
Working or prospective compositors follows.
Sway
(updated for 1.8.1)
Status: very active project, created a wlroots framework to share with other compositors, version 1.1+ is usable with some glitches, seamless xwayland integration
Packaging: in Debian with wlroots and swaybg
Notable problems:
- dialogs hidden under their parent (annoying with specific applications relying on child windows but most don't and there is a workaround)
- contextual popup or menu not working yet (affects tray and IME completion selection, see below for IME solutions)
Way Cooler (spiritual successor of AwesomeWM)
Status: was being rewritten on top of wlroots but was unfortunately abandoned at the beginning of 2020. I need some time to cope with the sadness and remove this entry.
Tools
Display Manager
- greetd:
- packaged in Debian, wlgreet packaging is in the NEW queue
- Status: tested with wlgreet and works fine. Keyboard input stops working if switching VT back and forth; need restart if that happens.
- packaged in Debian, wlgreet packaging is in the NEW queue
- lightdm:
- packaged in Debian
- Status: works fine to run Wayland sessions but runs on X11 itself. Input devices might be missing in the Wayland session but switching VT back and forth fixes the situation. Problems with libseat >= 0.5, possibly fixed in version >=1.28 but did not test it (now using greetd).
Bars
- swaybar: (display workspaces, current window title, tray, time, CPU infos…)
- integrated with sway, can use various commands to display stuff (i3status works fine and is packaged in Debian)
- Status: works fine but tray support is limited (icon may be missing, contextual menu not working, WIP)
- Waybar: (more fancy bar)
- packaged in Debian
- Status: tested only a short time, tray working better than swaybar, the date module is not compiled)
Session
- swayidle: (run custom actions on idle and back from idle)
- packaged in Debian
- Status: works fine and handle various events
Application Menu Runner
- wmenu:
- not packaged in Debian
- Status: untested
- j4-dmenu-desktop + bemenu:
- j4-dmenu-desktop only is packaged in Debian
- Status: works fine
- Usage: j4-dmenu-desktop --dmenu='bemenu --list 10 --wrap --ignorecase --no-overlap --prompt "Run:" --fn "pango:DejaVu Sans Mono 12"' --term=x-terminal-emulator
- dmenu:
- packaged in Debian (suckless-tools)
- Status: works fine but impossible to switch back to it if you loose focus (need to kill it in a term)
- Usage: dmenu_path | dmenu -p "Run:" -l 10 | xargs swaymsg exec
Notifications / Screen Overlay
- mako: (notifications):
- packaged in Debian (mako-notifier)
- works fine
- xfce4-notifyd: (notifications):
- packaged in Debian
- Status: works fine but display in the middle of the screen thus not very practical
Input Method
- fcitx5:
- has Wayland support
- packaged in Debian (now includes the mozc binding patch)
- Status: works fine with both Wayland and X11 applications
- fcitx4:
- packaged in Debian
- Status: untouched config from X11 works but completion menu may not be displayed; running fcitx-autostart fixed it (you may need to killall fcitx first)
- ibus:
- packaged in Debian
- Status: ibus-wayland is available and was switched to using a newer version of the wayland input protocol (see Debian#905001 and linked upstream BR) but Sway use an even newer version (and this one only); I was not able to make completion work at the time but the bug is closed and I guess it's working now but I have not tested it.
So here are the various protocols:
- wl_input_method: seems it was an old draft added to Weston but not part of the Wayland protocols
- zwp_input_method_v1: current Wayland unstable protocol, implemented by Weston, ibus-wayland and fcitx5
- zwp_input_method_v2: WIP to be integrated in Wayland unstable protocols, implemented by Wlroots/Sway
Terminal
- alacritty:
- packaged in Debian
- Status: works fine but IME completion popup not working despite support being implemented (setting WINIT_UNIX_BACKEND=x11 is a workaround)
- terminology:
- packaged in Debian
- Status: works fine but could not make IME support work despite the recommended ECORE_IMF_MODULE and XMODIFIERS settings
- termite: abandoned in favor of alacritty
- not packaged in Debian and requires a patched libvte
- Status: works fine
Screen Capture
- grim: (screenshot) (there is a wrapper called grimshot too to make things easy)
- packaged in Debian
- Status: works fine
- xdg-desktop-portal-wlr: (screenshot, screencast, and possibly remote-desktop)
- packaged in Debian
- Status: experimental, requires pipewire >=0.3 and FF >=84; tested screencast with FF and GMeet, it worked but takes a few seconds to initialize and sometimes hang and it may not be possible to get it to work again withotu restarting Sway; currently sharing a specific window or output is not yet possible.
Screen Settings
- light: (unfortunately orphaned since the 8th of March, 2023, let's hope someone picks up the maintenance)
- packaged in Debian
- Status: works fine
- brightnessctl:
- packaged in Debian (brightness-udev is needed to be usable as non-root)
- Status: works fine
- wl-gammactl:
- not packaged in Debian
- Status: works fine
Browser
- firefox:
- packaged in Debian
- Status: works fine on XWayland, works fine on Wayland too but officially it is still WIP
- chromium:
- packaged in Debian
- Status: works fine on XWayland, native Wayland support is WIP
Electron Apps
The Electronframework is based on Chromium/Ozone which now has a Wayland backend. Support in Electron came in version 12 which enables Ozone. Detection of Wayland environment is not automatic yet but on recent builds there is the `--ozone-platform-hint=auto` option to enable autodetection (I could not make it work yet though). Currently Electron now supports client-side decorations (but on tiling compositors like Sway you won't see them by default though). Unfortunately IME are not working yet.
To enable Wayland on the following applications you need to add the following options on the command line (or edit you .desktop file): --enable-features=WaylandWindowDecorations --ozone-platform=wayland
- signal-desktop:
- not packaged in Debian but upstream provides a package for Ubuntu that works on Debian
- Status: works fine but IME support missing on Wayland
- VSCodium: (OpenSource distribution of Visual Studio Code without telemetry and tracking)
- not packaged in Debian but upstream provides a working package
- Status: works fine but IME support missing on Wayland
Misc Apps
- Emacs:
- packaged in Debian
- Status: works fine on XWayland, since it is not a real GTK application Wayland support is a tricky problem but there's hope of a real GTK port which would bring Wayland support
- Libreoffice:
- packaged in Debian
- Status: works fine on XWayland, native Wayland support if using the GTK3 backend (with the extra libreoffice-gtk3 package) and working well too
- netevent: (Input-Event device cloning utility)
- use case: if you wish to control several machines with the same keyboard and mouse, like with a KVM switch, then you can use devices from one to control others and switch machine using a special key
- not packaged in Debian but materials provided upstream (needs this update though)
- Status: works fine
- Thunderbird:
- packaged in Debian
- Status: works fine on XWayland, works ok now on Wayland but officially it is still WIP
- Wine:
- packaged in Debian but lags behind a lot, my tests are using the packages made by the Wine project
- Status: works fine on XWayland with sometimes a few quirks; apps hang if run in non-native resolution or when switching workspace (but windowed using the full screen size often works; using a virtual desktop is also a working option). There is WIP to add upstream Wayland support and it's making quite a lot of progress (see 2020 report, 2021 report and 2022 report
Workarounds
GUI Frameworks
GTK uses GDK to draw and support for Wayland exists but a few things are missing thus it is not enabled by default. Other frameworks do not always enable Wayland by default depending on distro and version.
Currently this works fine:
# ensure GUI frameworks use Wayland # breaks a few apps or behaviors (Chromium, Emacs…) export GDK_BACKEND=wayland export CLUTTER_BACKEND=wayland export QT_QPA_PLATFORM=wayland-egl # breaks a few apps or behaviors (Unity…) #export SDL_VIDEODRIVER=wayland export ELM_DISPLAY=wl # enable Wayland on Mozilla apps export MOZ_ENABLE_WAYLAND=1 export MOZ_WEBRENDER=1
IME Settings
im-config sets various environment variable for various frameworks and X11 compat. You may also wish to set the GLFW_IM_MODULE too as a few applications use this framework.
The complete set with the recommended fcitx method (version 5 is better but the config is unchanged) (you might do without im-config altogether):
export XMODIFIERS="@im=fcitx" export GTK_IM_MODULE="fcitx" export QT_IM_MODULE="fcitx" export CLUTTER_IM_MODULE="xim" export GLFW_IM_MODULE="fcitx"
Java Applications
Set _JAVA_AWT_WM_NONREPARENTING=1 in your environment to fix behavior with menus and always on top issues (and maybe others).