tmux-plugins / tmux-yank

Tmux plugin for copying to system clipboard. Works on OSX, Linux and Cygwin.
https://tmux-plugins.github.io/tmux-yank/
MIT License
2.72k stars 122 forks source link

WSL clip.exe doesn't support utf8 characters #144

Open melink14 opened 4 years ago

melink14 commented 4 years ago

Noticed this while working on some Japanese parsing but whenever I copied with tmux yank, the later paste would be garbled text.

Eventually, tracked it down to clip.exe not supporting it. For full support there are two reasonable options:

  1. powershell.exe -command "Set-Clipboard" -Value "text to copy" which most WSL environments probably already have but would require some work to accept the argument from STDIN. (bash function or script)

  2. utf8clip dotnet program which works just like clip.exe but handles utf8. I chose to use this one and there's no issue either though it was probably a bit more work than 1 in the end...

I used a if-shell conditional to only override the command if the better command existed to make it easier to share my dotfiles.

menghuu commented 1 year ago

I add those in my .tmux.conf, it works

if-shell '[ -n "$WSL_DISTRO_NAME" ] && command -v powershell.exe >/dev/null 2>&1' {
  set -g @override_copy_command \
  'customclip(){ local STDIN=$(cat -); powershell.exe -command "Set-Clipboard" -Value "$STDIN"; }; customclip'
}
bigwheel commented 4 months ago

I add those in my .tmux.conf, it works

if-shell '[ -n "$WSL_DISTRO_NAME" ] && command -v powershell.exe >/dev/null 2>&1' {
  set -g @override_copy_command \
  'customclip(){ local STDIN=$(cat -); powershell.exe -command "Set-Clipboard" -Value "$STDIN"; }; customclip'
}

With multiline text, this doesn't work. Finally I decide to use xsel. It works well with multiline.

if-shell '[ -n "$WSL_DISTRO_NAME" ] && command -v powershell.exe >/dev/null 2>&1' {
  set -g @override_copy_command 'xsel -i --clipboard'
}