Fixing Nautilus Cut & Paste in labwc on Wayland

So you're running labwc as your Wayland compositor, and you've picked Nautilus as your file manager. Everything looks great — until you try to move a file. You press Ctrl+X, hop over to the destination folder, hit Ctrl+V… and nothing happens. No error, no feedback, just silence.

You're not going crazy. This is a known issue, and it boils down to a handful of missing pieces that a minimal labwc setup doesn't ship by default. Here's how to fix it, step by step.

Why This Happens

Nautilus doesn't talk to the clipboard directly on Wayland. It goes through XDG Desktop Portals — a middleman layer that handles things like file pickers, screenshots, and clipboard access. In a GNOME desktop, this just works because the right portal backend is already running. In labwc, it doesn't activate automatically because the portal system doesn't recognize labwc as a valid desktop environment.

On top of that, you need a couple of utilities to make clipboard operations work at all on Wayland, and GVFS for Nautilus to do anything useful with files (moving, trashing, mounting, etc.).

Step 1: Install the Required Packages

You need four things: the clipboard tools, two portal backends, and the virtual filesystem layer.

# Arch Linux / CachyOS
sudo pacman -S wl-clipboard xdg-desktop-portal-gtk xdg-desktop-portal-gnome gvfs

# Fedora
sudo dnf install wl-clipboard xdg-desktop-portal-gtk xdg-desktop-portal-gnome gvfs

# Debian / Ubuntu
sudo apt install wl-clipboard xdg-desktop-portal-gtk xdg-desktop-portal-gnome gvfs

Here's what each one does:

  • wl-clipboard — Provides wl-copy and wl-paste, the Wayland clipboard utilities. Without these, nothing clipboard-related works.
  • xdg-desktop-portal-gtk — The GTK portal backend. Handles file choosers, notifications, and other UI that Nautilus needs.
  • xdg-desktop-portal-gnome — The GNOME portal backend. This one's critical — it provides the Clipboard portal interface that Nautilus uses to handle its special file cut/copy/paste MIME type.
  • gvfs — Virtual filesystem backend. Handles trash, MTP, AFC, volume monitoring — the stuff that makes "move to trash" and "eject drive" actually work.

Step 2: Tell the Portal System to Use the GNOME Backend

This is the step that most guides miss, and it's the one that actually fixes the problem.

The portal system uses .portal files with a UseIn= field to decide which backend to launch. The GNOME portal declares UseIn=gnome — but labwc isn't GNOME, so the backend never starts. You need to override this manually.

Create ~/.config/xdg-desktop-portal/portals.conf:

[preferred]
default=gtk
org.freedesktop.impl.portal.Clipboard=gnome
org.freedesktop.impl.portal.FileChooser=gtk
org.freedesktop.impl.portal.Settings=gnome
org.freedesktop.impl.portal.AppChooser=gtk
org.freedesktop.impl.portal.Print=gtk
org.freedesktop.impl.portal.Notification=gtk
org.freedesktop.impl.portal.Screenshot=wlr
org.freedesktop.impl.portal.ScreenCast=wlr

The line that actually fixes cut and paste is this one:

org.freedesktop.impl.portal.Clipboard=gnome

It tells the portal daemon: "When Nautilus asks for clipboard access, use the GNOME backend." That backend knows how to handle the x-special/nautilus-clipboard MIME type that Nautilus uses internally to track whether you're cutting or copying a file.

The rest of the lines are reasonable defaults for a labwc setup. Screenshot and screencast go to the wlr backend since that's what labwc supports natively.

Step 3: Set Your Desktop Environment Variable

In ~/.config/labwc/environment, add:

XDG_CURRENT_DESKTOP=labwc:wlroots

This helps the portal system identify your desktop when it's deciding which backends to load. Without it, some portals might not activate at all.

Step 4: Restart the Portal Daemon

Portal changes don't take effect until the daemon restarts. Kill any running instances:

killall xdg-desktop-portal
killall xdg-desktop-portal-gnome
killall xdg-desktop-portal-gtk
killall xdg-desktop-portal-wlr

Then restart labwc (or log out and back in). If you don't have portal autostart configured, add this to ~/.config/labwc/autostart:

if command -v xdg-desktop-portal >/dev/null 2>&1; then
  /usr/libexec/xdg-desktop-portal &
  sleep 1
  /usr/libexec/xdg-desktop-portal-gtk &
  /usr/libexec/xdg-desktop-portal-wlr &
fi

The sleep 1 between the main portal and the backends isn't strictly necessary, but it gives the daemon a moment to initialize before the backends try to register with it.

Here's something that'll bite you eventually: labwc doesn't persist clipboard contents after the source application loses focus. So you cut a file in Nautilus, click somewhere else, and by the time you navigate to the destination folder, the clipboard is empty. The paste does nothing — not because the fix didn't work, but because the data is gone.

A clipboard manager solves this by watching the clipboard and storing its history. Add this to your autostart:

# cliphist (recommended)
wl-paste --watch cliphist store --no-notify &

# Or clipman as an alternative
wl-paste --watch clipman store --no-notify &

Install the matching package:

# Arch
sudo pacman -S cliphist    # or clipman

# Fedora
sudo dnf install cliphist

To restore your clipboard history on login (so you don't lose what you copied last session), also add:

cliphist restore &

Step 6: Verify It Works

Open Nautilus, pick a file, and try the full workflow:

  1. Select a file and press Ctrl+X — the icon should dim or gray out
  2. Navigate to a different folder
  3. Press Ctrl+V — the file should move

If that works, you're done. But if you want to dig deeper, you can inspect the clipboard contents from a terminal:

# See what MIME types are on the clipboard
wl-paste --list-types
# Should include: x-special/nautilus-clipboard (among others)

# Check the actual content
wl-paste -t "x-special/nautilus-clipboard"
# Should output something like:
# x-special/nautilus-clipboard
# cut
# file:///path/to/your/file

The cut (or copy) line tells you whether the operation was a cut or a copy. If you see copy when you pressed Ctrl+X, something's wrong with how Nautilus is writing to the clipboard.

Troubleshooting

Cut/Paste Still Doesn't Work

Start by checking the portal logs:

journalctl --user -u xdg-desktop-portal --no-pager -n 20

Look for errors like Could not activate remote peer 'org.freedesktop.impl.portal.desktop.gnome'. That means the GNOME portal isn't starting — double-check your portals.conf.

If the portal looks fine, try killing any clipboard managers and testing again:

killall wl-paste clipman cliphist

Some clipboard managers interfere with the x-special/nautilus-clipboard MIME type. If things work without a clipboard manager but not with one, you may need to configure it to preserve special MIME types.

Also make sure Nautilus is running natively on Wayland, not through XWayland:

xlsclients | grep nautilus

If it shows up, Nautilus is running as an X11 app. Fix this by adding to ~/.config/labwc/environment:

GDK_BACKEND=wayland

Pasting Text Shows x-special/nautilus-clipboard

This is expected behavior if you paste a file reference into a text editor — that's just the raw clipboard content. The issue is only if you see this when pasting files inside Nautilus itself. In that case, the paste operation isn't being intercepted correctly. Recheck the portal configuration.

Files Paste as Copies Instead of Moving

If you press Ctrl+X but the file ends up as a copy in the destination, the clipboard data likely got lost between the cut and the paste. A few things to check:

  • Are you switching focus away from Nautilus between Cut and Paste? If so, a clipboard manager (Step 5) will fix this.
  • Is the clipboard manager actually running? Run wl-paste --list-types and see if x-special/nautilus-clipboard appears.
  • Check the clipboard content — if it says copy instead of cut, Nautilus didn't register your cut command properly.

If You'd Rather Just Use a Different File Manager

If this all feels like too much friction, Thunar is a solid alternative. It works well on Wayland with labwc, doesn't depend on GNOME portals for basic file operations, and cut/copy/paste just works out of the box.

# Arch
sudo pacman -S thunar gvfs

# Set as default file manager
xdg-mime default org.xfce.Thunar.desktop inode/directory

There's no shame in choosing the tool that doesn't require a config file to function.

TL;DR

The short version: Nautilus needs the GNOME portal backend to handle clipboard operations on Wayland, and labwc doesn't trigger it automatically. Install xdg-desktop-portal-gnome and wl-clipboard, create a portals.conf that routes clipboard to the GNOME backend, set XDG_CURRENT_DESKTOP=labwc:wlroots, and restart the portal daemon. Add a clipboard manager so you don't lose data between cut and paste. That's it.