blog.bouzuya.net

2024-08-28 tmux の clipboard 関連設定

Ubuntu で tmux を使用しているが、 clipboard を共有できず、不便していた。いい加減になんとかしようかと思った。

tmux の GitHub リポジトリの Wiki に記載がある。

https://github.com/tmux/tmux/wiki/Clipboard

set-clipboard オプションと xsel にパイプする方法が示されていた。

せっかくなので tmux に閉じず、 macOS で言うところの pbcopy pbpaste に対応するコマンドに慣れたいので後者を選択した。

ここで迷い。 X のクリップボード関連のツールだと xsel 以外に xclip というのもあったはずだけど、どちらがいいのか迷った。

結局ぼくは xsel を使用した。理由は ArchWiki の tmux のページに xclip だと STDOUT を閉じないために応答しなくなる問題があるという記述があったからだ。回避策はあるらしいし、もしかしたら修正されているかもしれないが、最初から避けられるなら避けたい。

https://wiki.archlinux.org/title/Tmux

次はオプション指定で迷い。公式 Wiki には set -s copy-command 'xsel -i' とあるが、この通りに指定するとうまくコピーできなかった。

xsel -i ではなく xsel -ip && xsel -op | xsel -bi としたほうがいい。 ArchWiki ではこの指定がされている。

man xsel には次のようにある。

       Selection options

       -p, --primary
              operate on the PRIMARY selection (default).

       -s, --secondary
              operate on the SECONDARY selection.

       -b, --clipboard
              operate on the CLIPBOARD selection.

PRIMARY, SECONDARY, CLIPBOARD という 3 つの selection があるらしい。 PRIMARY はマウスのホイールクリックに対応するらしい。

単に xsel -i とすると PRIMARY selection のみにコピーしてしまう。

Ctrl-V で使用する selection は CLIPBOARD だ。なので xsel -bi でもそれなりに動くのだけど、マウスのホイールクリックに入らないし、期待した selection に値が入っていないことで逆にペーストする際に問題が起きたので、両方に入れる。

結論は xsel -ip && xsel -op | xsel -bi 。まず PRIMARY に入れ、その値を CLIPBOARD にも入れる。

これでなんとなく動いた。このへんの設定を nix の home-manager に入れて、おしまい。


今日のコミット。