Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
teach emacs to use wl-copy
(setq wl-copy-process nil)
(defun wl-copy (text)
(setq wl-copy-process (make-process :name "wl-copy"
:buffer nil
:command '("wl-copy" "-f" "-n")
:connection-type 'pipe))
(process-send-string wl-copy-process text)
(process-send-eof wl-copy-process))
(defun wl-paste ()
(if (and wl-copy-process (process-live-p wl-copy-process))
nil ; should return nil if we're the current paste owner
(shell-command-to-string "wl-paste -n | tr -d \r")))
(setq interprogram-cut-function 'wl-copy)
(setq interprogram-paste-function 'wl-paste)
@be-neth
Copy link

be-neth commented Apr 22, 2021

Hi, thanks for that!

From my emacs (using emacsclient in alacritty terminal) I need to set WAYLAND_DISPLAY variable to get this working.

M-x setenv

@yorickvP
Copy link
Author

yorickvP commented May 10, 2021

I'm now using emacs-pgtk, which has native wayland support. It's in https://github.com/nix-community/emacs-overlay

@Croissong
Copy link

Croissong commented Oct 24, 2021

@yorickvP I am using emacs-pgtk, but pasting into emacs still doesn't work a lot of the time.
The value of (gui-selection-value) is different from the wl-paste output.

Your snippet works 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment