My Transition to Wayland (Xfce4) - Performance and Tweaks with labwc

Rocky10x1

Member
Joined
Dec 4, 2025
Messages
21
Reaction score
41
Credits
198
Hey everyone,

After 25+ years on Linux, I finally decided to give Wayland a real test run on my XFCE4 setup. To be honest, I’m surprised at how well everything is running.
Setup:
  • Compositor: labwc (Fits the Xfce workflow perfectly).
  • Hardware: Intel CometLake (LifeBook U9310 notebook)
  • Performance: Rock solid. It’s a world of difference from X11, zero tearing, no more "jumpy" touchpad, and everything feels snappy. My CPU actually seems to stay cooler, too.
The Intel + labwc + Vulkan combo is working flawlessly for me.
If you’re thinking about testing it out or if you’re stuck on your own config, let me know. Happy to share my tweaks or help with troubleshooting.
 


Most people I know that user tiling window manager that support Wayland use Hyprland, Niri or Sway and it seems MangoWC is also starting to become popular. I could be wrong as I a just looked it up it seems LabWC is a stacking wayland compositor. Either way it we be cool to see your setup to get an idea of your workflow and setup as it's no one I've heard of before.
 
Either way it we be cool to see your setup to get an idea of your workflow and setup as it's no one I've heard of before.
Or is this your new setup which you shared here already?
 
@Rocky10x1 Glad your trying it out for the rest of us. :) I've been using wayland for some time with KDE and it's been working well for me. But when I tried it with Cinnamon on Mint 22.3 The results were not good.
 
Most people I know that user tiling window manager that support Wayland use Hyprland, Niri or Sway and it seems MangoWC is also starting to become popular. I could be wrong as I a just looked it up it seems LabWC is a stacking wayland compositor. Either way it we be cool to see your setup to get an idea of your workflow and setup as it's no one I've heard of before.
Yes, labwc is a stacking compositor, and that’s exactly why it works for me. I tried tiling (Sway), but it just doesn't fit my workflow. For me, labwc is the perfect "modern Openbox." :)

The transition does require some legwork, though. Xfce’s native GUI tools for things like keyboard, mouse, touchpad, etc.. are X11-bound so they don't work here. I had to move all of that including lock protection (suspend), into labwc configs. The same goes for screenshots. Since the standard Xfce tool is hit-or-miss on Wayland, I’ve switched to grim and slurp to handle region/area captures. It’s fast and works perfectly once you map it to a shortcut. I wrote some scripts to switch between xfdesktop and labwc while I was setting things up. It helped me bridge the gap and adapt my configuration habits. It takes some manual tweaking, but the result is a rock-solid, snappy system.
 
Last edited:
@Rocky10x1 Glad your trying it out for the rest of us. :) I've been using wayland for some time with KDE and it's been working well for me. But when I tried it with Cinnamon on Mint 22.3 The results were not good.
Trying to port a massive, feature-heavy desktop environment like Cinnamon is a huge task, and it's bound to have issues for now. In my experience, a lightweight stacking compositor like labwc is a completely different beast. It’s much closer to the metal and doesn't carry the overhead of a full DE trying to bridge years of X11 legacy code all at once.
 
Yes, labwc is a stacking compositor, and that’s exactly why it works for me. I tried tiling (Sway), but it just doesn't fit my workflow. For me, labwc is the perfect "modern Openbox." :)
Can you share a screenshot of how the settings menu looks like with LabWC?

The same goes for screenshots. Since the standard Xfce tool is hit-or-miss on Wayland, I’ve switched to grim and slurp to handle region/area captures. It’s fast and works perfectly once you map it to a shortcut.
I use grim and slurp on my Hyprland setup for screenshots as well.
 
I've been using wayland for some time with KDE and it's been working well for me. But when I tried it with Cinnamon on Mint 22.3 The results were not good.
I tried Wayland with LMDE 7 and it seemed to work well although it failed to wake up from sleeping.

The only solution was a hard restart using the power button on the front of the computer.

So back to X11 guess Wayland ain't quite ready for prime time with LMDE 7 which is a bummer.

I've used Wayland in Fedora and Ubuntu and it ran flawlessly using the Gnome desktop environment.
 
Can you share a screenshot of how the settings menu looks like with LabWC?
In labwc the setup is split into a few key files..

autostart:
This is where I handle monitor settings, scaling, and the gnome-keyring etc..

environment:
I use this for things like the ssh-agent, mouse cursor themes, and my keyboard layout.

rc.xml:
This is the heart of the whole setup. It’s where I configure libinput, keybindings, volume and brightness controls, and window positioning.

menu.xml:
This defines the root menu (right-click). It’s how I quickly launch apps or execute scripts.

themerc:
This is where I dial in the look and feel, like the title bar style and window decorations.

It’s a very clean and modular way to work.

To give you an idea, I’ve attached my menu.xml and rc.xml below. They can be easily expanded and tweaked to fit any user's specific needs. Just a heads-up: make sure to get your correct monitor identifiers first, as the monitor configuration needs to match your hardware exactly.

I’m currently putting together a list of all the necessary packages for Arch Linux users. I’ll post it this weekend to help anyone who wants to try a similar setup. For other distributions, the process should be pretty much the same.
 

Attachments

  • Area_20260304_154333.png
    Area_20260304_154333.png
    114 KB · Views: 245
  • Area_20260304_153857.png
    Area_20260304_153857.png
    308.2 KB · Views: 131
In labwc the setup is split into a few key files..
The key files look similar to what Xfce has which are written by changing settings in the settings menu. There's no settins menu's with LabWC?
 
The key files look similar to what Xfce has which are written by changing settings in the settings menu. There's no settins menu's with LabWC?
You hit the nail on the head, there is no settings menu in labwc. :D
If you want to change a keybinding or window behavior, you just open the corresponding XML file, change the values manually, and reconfigure.

It's definitely an "old school" workflow, but on a modern Wayland/Vulkan base, it’s incredibly powerful. ;)

ps .. There are some third-party tools like wdisplays for monitors or nwg-look for themes, but there is no official "Settings Manager".
 
I tried Wayland with LMDE 7 and it seemed to work well although it failed to wake up from sleeping.

The only solution was a hard restart using the power button on the front of the computer.
A new series of Xfce updates has just arrived in the repositories..
xfce4-panel (4.20.7-1) - xfce4-session (4.20.4-1) - xfce4-settings (4.20.4-1)

According to the changelog, the problems with logging out and power management (suspend/hibernate) have been fixed. However, without the xfwl4 compositor, labwc remains the engine for now.
 

Attachments

  • Area_20260305_090238.png
    Area_20260305_090238.png
    133.4 KB · Views: 76
  • Area_20260305_090145.png
    Area_20260305_090145.png
    245.4 KB · Views: 75
  • Area_20260305_085607.png
    Area_20260305_085607.png
    143.9 KB · Views: 72
@Rocky10x1 Glad your trying it out for the rest of us. :) I've been using wayland for some time with KDE and it's been working well for me. But when I tried it with Cinnamon on Mint 22.3 The results were not good.
Me too. Wayland would lock up the whole Cinnamon DE.
 
Hi everyone,

Just a quick heads-up.. I’m taking this slow to give everyone time to dig into the info and avoid mistakes. A broken DE can be a massive headache, so let’s do this step-by-step. ;)

To clear things up.. We’re basically upgrading Xfce to run on the modern and secure Wayland instead of the old X11, without losing the comfort. Once it's dialed in, you won't even notice the difference. All your usual Xfce apps will keep working; that’s why we need the tools below.

Here’s my current stack to keep things running smoothly:

# Core Engine
labwc
: The WM/compositor replacing xfwm4.
wlroots0.19: The backbone for labwc.
libliftoff: Smooths out display performance behind the scenes.
libsfdo: Handles things like desktop files and icons.

# Hardware & System
seatd
: Clean hardware access (graphics/input).
libei: Needed for remote desktop or input testing.
brightnessctl: Tweak screen brightness via CLI or keys.

# Keeping X11 Apps Alive
xorg-xwayland
: For those older apps that aren't Wayland-native yet.
xcb-util-errors: Helps you debug if an X11 app acts up.

# Integration & Portals
xdg-desktop-portal
: The middleman for app communication.
xdg-desktop-portal-gtk: Essential for file pickers and screenshots in Xfce.

# Qt App Support
qt5-wayland / qt6-wayland
: Stops Qt apps from acting weird on Wayland.
qt5-declarative / qt6-declarative: Needed for modern UI components.
qt6-svg: Fixes broken icons in Qt6 apps.

# Locking & Power
swaylock
: Your new screen locker.
swayidle: Triggers locking or sleep after a timeout.
xss-lock: A bridge for older screen locker signals.
swaybg: Simple tool to set your wallpaper.

# Desktop Utilities
wlr-randr
: Like xrandr, but for Wayland. Use this for monitor layouts.
wlsunset: Blue light filter for late-night sessions (optional).
grim & slurp: The dream team for screenshots (grab & select).
wl-clipboard: For all your copy-paste needs in the terminal.

A note on security and sources,,
When it comes to apps that control your system, stick to the official repos. It's the best way to get simple, fast, and secure updates.

This setup doesn't need any dependencies from Flatpak, AUR, GitHub etc.. I’ve put some pre-configured XML templates in my repo as a starting point, but they’re totally optional.

Feel free to shout if you’re stuck with any of these e.g., pulling monitor data or tweaking the config.

Have fun configuring :)

XML Templates
 
Last edited:
Check out this short clip showing how well Xfce4 and labwc play together on Arch Linux. Everything is buttery smooth. It's especially impressive how cleanly mpv handles the Vulkan API with the modern gpu-next output (using vulkan and waylandvk).

CLIP
 
In labwc the setup is split into a few key files..

autostart:
This is where I handle monitor settings, scaling, and the gnome-keyring etc..

environment:
I use this for things like the ssh-agent, mouse cursor themes, and my keyboard layout.

rc.xml:
This is the heart of the whole setup. It’s where I configure libinput, keybindings, volume and brightness controls, and window positioning.

menu.xml:
This defines the root menu (right-click). It’s how I quickly launch apps or execute scripts.

themerc:
This is where I dial in the look and feel, like the title bar style and window decorations.

It’s a very clean and modular way to work.

To give you an idea, I’ve attached my menu.xml and rc.xml below. They can be easily expanded and tweaked to fit any user's specific needs. Just a heads-up: make sure to get your correct monitor identifiers first, as the monitor configuration needs to match your hardware exactly.

I’m currently putting together a list of all the necessary packages for Arch Linux users. I’ll post it this weekend to help anyone who wants to try a similar setup. For other distributions, the process should be pretty much the same.
Hi, could you post these as text somewhere, rather than screenshots? Maybe a gist, or attach as text here?

Gist is best in my opinion as many people (in my orbit, including myself, of course!) will search github gists and repos for things like this before search engines.

I’ve been deferring moving to Wayland, despite needing its security features, as I wasn’t quite ready to make a Wayland implementation work similarly enough to xfce4.
 
In labwc the setup is split into a few key files..

autostart:
This is where I handle monitor settings, scaling, and the gnome-keyring etc..

environment:
I use this for things like the ssh-agent, mouse cursor themes, and my keyboard layout.

rc.xml:
This is the heart of the whole setup. It’s where I configure libinput, keybindings, volume and brightness controls, and window positioning.

menu.xml:
This defines the root menu (right-click). It’s how I quickly launch apps or execute scripts.

themerc:
This is where I dial in the look and feel, like the title bar style and window decorations.

It’s a very clean and modular way to work.

To give you an idea, I’ve attached my menu.xml and rc.xml below. They can be easily expanded and tweaked to fit any user's specific needs. Just a heads-up: make sure to get your correct monitor identifiers first, as the monitor configuration needs to match your hardware exactly.

I’m currently putting together a list of all the necessary packages for Arch Linux users. I’ll post it this weekend to help anyone who wants to try a similar setup. For other distributions, the process should be pretty much the same.
I OCR’d these, so you can ignore my previous request - though it would still be appreciated if you put some of yout configs/dotfiles somewhere.

Note, it seems like some stuff got mangled in at least one of your files - not the fault of OCR, I eyeballed the image to be sure.

I assume for menu.xml, the APP2 entry specifically, it should be:

<action name="Execute" command=“APP2”/>

Rather than:

<action name="Execute" APP2” />

If so, the fixed version as text would be:

<?xml version="1.0" encoding="UTF-8"?>
<labwc_menu>
<menu id="root-menu" label="Main Menu">
<item label="NAME">
<action name="Execute" command="APP1" />
</item>
<item label="NAME">
<action name="Execute" command=“APP2" />
</item>
<item label="NAME">
<action name="Execute" command="APP3" />
</item>
<separator />
<item label="NAME">
<action name="COMMAND" />
</item>
<item label="NAME">
<action name="COMMAND" />
</item>
</menu>
</labwc_menu>

Then the rc.xml, as text, comes out like this:

<windowRules>
<windowRule identifier="APP1">
<action name="MoveTo" x="0" y="30" />
<onTop>yes</onTop>
<skipTaskbar>yes</skipTaskbar>
<sticky>yes</sticky>
</windowRule>

<windowRule identifier="APP2">
<action name="MoveTo" x="0" y="30" />
<onTop>yes</onTop>
<skipTaskbar>yes</skipTaskbar>
<sticky>yes</sticky>
</windowRule>

<windowRule identifier="APP3">
<action name="MoveTo" x="0" y="30" />
<onTop>yes</onTop>
<skipTaskbar>yes</skipTaskbar>
<sticky>yes</sticky>
</windowRule>

<windowRule identifier="APP4">
<position x="660" y="370" />
<onTop>no</onTop>
<decorations>no</decorations>
<shouldFocus>yes</shouldFocus>
</windowRule>

<windowRule title="APP5">
<action name="MoveTo" x="15" y="15"/>
<action name="SetDecorations" decorations="none"/>
</windowRule>
</windowRules>

</labwc_config>

Anyway, thanks for posting these!
 


Follow Linux.org

Members online


Top