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 に入れて、おしまい。
今日のコミット。