macOS-style Super+C / Super+V copy-paste everywhere on Fedora GNOME (incl. Ptyxis terminal)
Published 21 June 2026
- date
- env
- linux Fedora 44, GNOME on Wayland, keyd 2.6.0, Ptyxis terminal macos N/A — habits carried over from macOS (Cmd+C / Cmd+V)
- tags
Symptom
Coming from macOS, my fingers expect Cmd+C / Cmd+V (the Cmd key sits where
the Super/⊞ key is on a PC keyboard). On Fedora GNOME I instead have to use
Ctrl+C / Ctrl+V in GUI apps, and the even more awkward Ctrl+Shift+C /
Ctrl+Shift+V inside the terminal. I want Super+C / Super+V / Super+X to
copy / paste / cut everywhere — GNOME apps and the Ptyxis terminal.
Two things get in the way out of the box:
Super+V(andSuper+M) are already bound by GNOME to open the notification list / calendar, so pressingSuper+Vpops up the calendar.- The terminal needs a different copy/paste signal than
Ctrl+C, becauseCtrl+Cmust keep meaning SIGINT (interrupt the running program).
Root cause
There is no single “copy” action in Linux to bind a key to; copy/paste is handled independently by each application. Two naive approaches both fail:
- Binding
Super+Cto sendCtrl+Cbreaks the terminal: thereCtrl+Cis SIGINT, so you would kill the foreground process instead of copying. - A GNOME custom shortcut that “types”
Ctrl+Cneeds a key injector. On GNOME/Waylandwtypedoes not work (Mutter does not implement thevirtual_keyboardprotocol), andydotoolis a clunky root daemon with keyboard-layout issues.
The clean, well-known answer is to emit the dedicated XF86Copy /
XF86Paste / XF86Cut media keys (the keys a keyboard’s physical
copy/paste/cut buttons send). GTK/Qt apps interpret these as copy/paste, and —
crucially — VTE-based terminals treat them as copy/paste without disturbing
Ctrl+C/SIGINT. This idea is described by Hugo Osvaldo Barrera in Copying with
Super+C (see Sources).
To produce those keysyms reliably on Wayland, keyd is the right tool: it remaps at the kernel level (evdev/uinput), below the display server, so a single config works in Wayland, X11, the TTY and every app (confirmed by the keyd project; see Sources).
Two machine-specific gotchas, both confirmed on this machine:
- In keyd 2.6.0 the inline chord form
meta+c = copyis rejected (WARNING: meta is not a valid key). The working form is the[meta]modifier layer. - Ptyxis (the default Fedora terminal, VTE/GTK4) does not bind the
XF86Copy/XF86Pastemedia keys by default, so the terminal ignores them until its own shortcuts are pointed at those keysyms.
Diagnosis (optional)
Confirm which terminal is in use (Fedora ships Ptyxis by default):
ps -e -o comm= | grep -iE "ptyxis|kgx|gnome-terminal|kitty|alacritty|foot"Confirm GNOME owns Super+V / Super+M:
gsettings get org.gnome.shell.keybindings toggle-message-trayAfter configuring keyd (below), confirm keyd parsed the config without rejecting any key:
journalctl -u keyd --no-pager -n 20 | grep -i "not a valid key"No output means the bindings were accepted.
Solution
The approach: keyd turns Super+C/V/X into the XF86Copy/Paste/Cut media keys
globally; GNOME apps honour them natively; Ptyxis is told to honour them too.
Prerequisites / warnings
- keyd runs as a root daemon and grabs keyboard devices system-wide. It is a small, single-purpose, widely used tool, but it does sit in your input path.
- Pointing Ptyxis at the media keys replaces its
Ctrl+Shift+C/Ctrl+Shift+V(these are single-value settings).Ctrl+Cas SIGINT is untouched. keydis not in the Fedora repositories; it is installed from thealternateved/keydCOPR.
Steps
-
Install keyd and enable its service.
Terminal window sudo dnf copr enable alternateved/keydsudo dnf install keydsudo systemctl enable --now keyd -
Write the keyd configuration (the
[meta]layer = “while Super is held”).Terminal window sudo tee /etc/keyd/default.conf > /dev/null <<'EOF'[ids]*[meta]c = copyv = pastex = cutEOF -
Reload keyd so it picks up the new config.
Terminal window sudo keyd reload -
Tell the Ptyxis terminal to honour the media keys.
Terminal window gsettings set org.gnome.Ptyxis.Shortcuts copy-clipboard 'XF86Copy'gsettings set org.gnome.Ptyxis.Shortcuts paste-clipboard 'XF86Paste' -
(Optional) Free up
Super+M, which still opens the calendar. keyd already interceptsSuper+Vbefore GNOME sees it, butSuper+Mis a second binding on the same action.Terminal window gsettings set org.gnome.shell.keybindings toggle-message-tray "[]" -
Fully restart Ptyxis so it reloads its shortcuts (close every window; if a background agent persists, end it).
Terminal window pkill ptyxis-agent
Note on “cut” in the terminal: Ptyxis has no cut action (terminal output is read-only), so
Super+Xdoes nothing there by design. It still cuts in GUI text fields.
Verify
keyd accepted every binding (expect no output):
journalctl -u keyd --no-pager -n 20 | grep -i "not a valid key"The service is active and enabled:
systemctl is-active keyd && systemctl is-enabled keydPtyxis points at the media keys:
gsettings get org.gnome.Ptyxis.Shortcuts copy-clipboardgsettings get org.gnome.Ptyxis.Shortcuts paste-clipboardExpected:
'XF86Copy''XF86Paste'Manual checks:
- In a GNOME app (e.g. a browser text field): select text →
Super+C, place cursor →Super+V. Cut withSuper+X. - In Ptyxis: select output →
Super+C, thenSuper+Vto paste. ConfirmCtrl+Cstill interrupts a running command (e.g.ping). - Press
Super+Von the desktop: the calendar must not appear.
Rollback
Undo everything, in reverse order. Each block is independent — run only what you need.
Restore the Ptyxis terminal shortcuts (Ctrl+Shift+C/V):
gsettings reset org.gnome.Ptyxis.Shortcuts copy-clipboardgsettings reset org.gnome.Ptyxis.Shortcuts paste-clipboardpkill ptyxis-agentRestore the GNOME calendar shortcut (only if you cleared it in step 5):
gsettings reset org.gnome.shell.keybindings toggle-message-trayRemove the keyd remapping and the daemon:
sudo systemctl disable --now keydsudo rm -f /etc/keyd/default.confsudo dnf remove keydsudo dnf copr remove alternateved/keydTo keep keyd but temporarily disable the remapping, instead empty the config and reload:
sudo truncate -s 0 /etc/keyd/default.confsudo keyd reloadAlternatives
- Keep
Ctrl+Shift+C/Vin the terminal too: not possible alongside this setup, because Ptyxis stores a single accelerator per action. You choose one or the other. - Per-keyboard targeting:
[ids] *matches all keyboards. To limit keyd to the built-in keyboard, runsudo keyd monitorto read itsvendor:productid and put it under[ids]instead of*. - Other terminals: VTE terminals such as GNOME Terminal / Console honour
XF86Copy/XF86Pastenatively.kitty,alacritty,footandxtermneed a per-terminal binding to the same keysyms. - GNOME-only, no keyd: technically possible via
ydotool, but it needs a root socket, theinputgroup, and misbehaves on non-US layouts — not recommended.
Sources
- keyd — kernel-level key remapping daemon (evdev/uinput, works on Wayland & X11) — https://github.com/rvaiya/keyd
- “Copying with Super+C” by Hugo Osvaldo Barrera — rationale for emitting
XF86Copy/XF86Pasteinstead ofCtrl+C— https://whynothugo.nl/journal/2022/11/04/copying-with-super-c/ - Ptyxis terminal (GNOME, VTE/GTK4) — https://gitlab.gnome.org/chergert/ptyxis
Sources verified on 2026-06-21. The alternateved/keyd COPR install is confirmed working on this machine but its web page blocks automated fetching, so it is not listed above as a verified URL.