2012/02/23

Xのクリップボードについて

tmuxでコピーした内容を他に貼り付けるときに、クリップボードを共有できないと面倒なのでXのクリップボードについて調べてみた。 Linuxではというより、X11では少し変わったクリップボードの持ち方をしてるようなので、興味深い。

Xのクリップボードの種類

Xのクリップボードは実際には(バッファが)3種類ある。
  • PRIMARY
  • SECONDARY
  • CLIPBOARD
これらのバッファそれぞれに対して、コピー&ペーストの操作が行われる。 重要なこととして、これらが独立したバッファであることは注意したい。 例えば、
  • マウスでテキストを反転選択する →PRIMARYにコピーされる
  • マウスでテキストを反転選択して、右クリックのメニューからコピー →CLIPBOARDにコピーされる
などある。それぞれ、異なるバッファにコピーされることに注意したい。 試しに、まず、適当な文字列を右クリックでコピーしたあと、別の文字列を選択のみ行なって、
  1. マウスの真ん中のクリックでペースト
  2. 右クリックからペースト(か、Ctr+v)
でことなる文字列がペーストされることが確認できると思う。

クリップボードの操作のコマンド

クリップボードをコマンドラインから操作する方法として、少なくとも
  • xsel : Xセレクション(クリップボード)を操作する
  • xclip : Xセレクション(クリップボード)のコマンドラインインターフェース
という2つがあるらしい。今回はxclipを使っていこうと思う。

xclipについて

xclipのインストール

$ sudo apt-get install xclip
これを実行すると自分の環境の場合、 xclip-copyfile, xclip-pastefile なども使えるようになった。便利だと思うのでまずは、manのEXAMPLESを見て欲しい。

xclipの使い方

xclipのオプションとして、次は基本的だと思う。
  • -i : 標準入力またはファイルから、バッファにコピーする
  • -o : 標準出力にバッファの内容をコピーする
  • -selection : どのバッファを使うか指定(primary,secondary,clipbord)する。指定しない場合のデフォルトはPRIMARY。
例えば、
$ echo "test" | xclip -i
$ xclip -o
って感じで使う。 とりあえず、コマンドラインからクリップボードを操作できるようになった。 アプリケーションごとにクリップボードを独自に持ってる場合には、このコマンド使うなりして、 Xのクリップボードに持ってこれば良いと思うので、かなり便利になると思う。

0 件のコメント:

コメントを投稿