コマンドラインからXのクリップボードを操作する
コンソール(ktermとか)でマウスのセンターボタンを押すと、
「コピー」した内容ではなく、現在選択している領域がペーストされますよね。
その理由がやっとわかった。
[X Window System] クリップボードの種類 - Life with IT http://l-w-i.net/t/x/clipboard_001.txt
X Windows Systemではクリップボードに3種類のバッファが用意されており、コピー方法によって使用するバッファが異なる。
PRIMARY
マウスでテキストを反転させてコピーした場合SECONDARY
(未使用)CLIPBOARD
マウスでテキストを反転させ、右クリックしてコピーを選択した場合
マウスでテキストを選択した段階でその内容がPRIMARYバッファに入る。
それを「コピー」することでCLIPBOARDバッファに入る。
つまり自分の使ってた端末エミュレータでは、
センタークリックではprimaryからペースト
右クリック→ペーストではclipboardからペーストしていた
ということになる。へー。
ところで
Xのクリップボードを操作するコマンドを最近知って、たまに便利なので紹介。
xclipってやつで
-iでクリップボードへコピー
-oでクリップボードからペースト
ができます。
また、使用するバッファを-selectionオプションで指定できます。
-selection指定しないときはprimaryが使われるみたい。
[toshi@desktop ~]$ echo 'hello' > test.txt
[toshi@desktop ~]$ cat test.txt | xclip -i
[toshi@desktop ~]$ xclip -o
hello
[toshi@desktop ~]$ xclip -o -selection primary
hello
-selection primary, -selection clipboard が長くてめんどくさいなーって思ったんですが、
試したかぎりでは-sel p, -sel cとかでもできました。
[toshi@desktop ~]$ xclip -o -sel p
hello
これでコマンドの出力結果をGUIアプリにぺっ、とはりつけるの楽ちんになりますね。
クリップボードの履歴ってたどれたりしないんですかね?
Emacsのキルリングみたいに。(注)
方法知ってる人いたら教えてくれたりしないかなあ。