動機
Terminator
というソフトで、「Copy on Selection」機能を使って、WindowsのTeratermのようにテキストを選択したら自動的にクリップボードにコピーされるようにしていた。
が、先日のアップデートから?この機能がちょっと使いにくくなった。
テキスト選択中に画面が更新されると、更新後の画面にあるテキストをコピーしに行くようになった。そのため、画面スクロールなどすると意図しないテキストをコピーするようになり、非常に不便だった。
Linuxのクリップボードについて
ちょっと調べたら、Linuxのクリップボードは3種類あり、「Primary」「Secondary」「Clipboard」がある。
これらの役割は
- Primary: X11により、何かテキストを選択した時に自動的にコピーされる領域
- Secondary: 不明
- Clipboard: GUIアプリケーションにより、C-cでコピーされる領域
となっているので、「Primary」と「Clipboard」を同期させれば、常に「Copy on Selection」が実現できるのではないかと考えた。
やったこと
xsel
のマニュアルにある通り、
-
xsel -o
で 「Primary」をPaste -
xsel -bi
で 「Clipboard」にCopy
できるので、
bash -c 'while true; do xsel -o | xsel -bi; sleep 0.5; done' &
として、Primary と Clipboard を同期させた。
また、Vimからもシステムのクリップボードにコピーしたいので
vmap <C-c> :w !xsel -i<CR><CR>
とした。
結果
これによって、どのアプリケーションでも「Copy on Selection」が実現されるので、例えばChromeでも選択した瞬間にコピーされることになる。
これまではautocopyを使っていたがアンインストールできた。
追記
Mozcで変換していると、全てクリップボードに入ってきて使いづらくて仕方なかったので、止めた。
その代わり、 Shift + Insert
で prymary
クリップボードの内容を挿入できるので、それで十分になった。