A Day in the Life

VirtualBox の Windows と Linux (CUI) でクリップボードでテキスト共有

VirtualBox の Windows と Linux (CUI) でクリップボードでテキスト共有

わーい昔からやりたかった、ホストOS(Win) とゲスト Linux OS の CUI 上で文字列のクリップボード共有ができたよ!! VirtualBox 入れ直した記念に久しぶりに再チャレンジしたらできた。環境は VirtualBox 3.2.0 でホストOSは Windows 7 でゲストOS は Debian (sid)。

VirtualBox の設定で双方向のクリップボード共有にチェックを入れる

これデフォで入ってる気がします

ゲストOSに Guest Additions を入れる

入れます。カーネルモジュールとか作られるのでモジュールロードか再起動を適当に。すると VBoxService が自動で立ち上がるはず。

ゲストOSに Xvfb を入れる

仮想フレームバッファの Xvfb を入れます。適当に apt で入る。

Xvfb を立ち上げ

ユーザ権限で立ち上げます。X のクリップボード使いたいだけなのでディスプレイサイズは小さくてよいです。もっとちいさくてもいいかも。

$ Xvfb -screen 0 320x240x8 &

VBoxClient の立ち上げ

クリップボード共有のため立ち上げます。僕は export DISPLAY=:0 とか設定してる人は特に DISPLAY 系の指定は今後いりません。

$ DISPLAY=:0 VBoxClient --clipboard &

xsel のインストール

X の Clipboard を扱うために入れます。apt で適当に。

xsel のエイリアス

mac osx の pbpaste / pbcopy がうらやましいのでその名前で alias を張ってやります。適当に .zshrc とかに書くといいと思います。

if [ -x /usr/bin/xsel ]; then
  alias pbcopy='xsel --display :0 --input --clipboard'
  alias pbpaste='xsel --display :0 --output --clipboard'
fi

これで

$ pbpaste
$ echo 'foo'|pbcopy

でホストOS(win)とゲストOS(Linux)のCUIでちゃんと共有できるように。これで OSX とかうらやましくないんだからねっ!!

おまけ・めんどくさいので .zshrc で Xvfb と VBoxClient を立ち上げる

# Xvfb と VBoxClient があって .X0-lock がなければ立ち上げる
if [ -x /usr/bin/Xvfb ] && [ -x /usr/bin/VBoxClient ] && [ ! -f /tmp/.X0-lock ]; then
  Xvfb -screen 0 320x240x8 > /dev/null 2>&1 &
  sleep 0.5
  DISPLAY=:0 VBoxClient --clipboard
fi

sleep 入れないと X が立ち上がってなくて VBoxClient が立ち上がらないので適当に…。