Linux
コマンド
X11
XWindowSystem
xephyr

Xephyrコマンドの使い方

はじめに

X11の機能の一つである「Xephyr」を使うと、すでに起動しているXサーバに新たなXサーバをネストできるみたいです。使い方などをここにメモしときます。

コマンドの使い方

Xephyr起動前の準備

まずはXephyrのインストールが必要です。お使いのディストリビューションに合った方法でインストールしてください。

Xephyrコマンドを使う前に、環境変数DISPLAYを現在起動しているXサーバに設定しておきましょう。起動中のXサーバにネストするのですから、それが指定されていないとダメなわけです。

# 0番Xサーバが起動している場合
$ export DISPLAY=:0

コマンドの使い方

Xephyrコマンドは次のようにして使います。

$ Xephyr <ディスプレイ番号> <オプション1> <オプション2> … -screen <横>x<縦> … &

(例)

$ Xephyr :1 -ac -br -screen 300x600 -screen 400x500 &

詳しい使い方は以下で説明していきます。

ディスプレイ番号

Xephyrで起動するXサーバのディスプレイ番号を指定します。現在起動中のXサーバが使っている番号は使えないので、それ以外を使ってください。
例えば0番Xサーバが起動中なら、:0以外(:1や:2)が使えます。

オプション

Xephyrで使えるオプションをいくつか紹介します。かなり細かく制御できるみたいです。もっと知りたい方はmanページなどをご覧ください。

-ac (アクセス制御の停止)

初めからxhost +を実行してアクセス制御を停止させたような状態でXサーバを起動します。

-resizeable (ウィンドウサイズ変更可能)

生成するウィンドウのサイズを可変にします。これによってマウスでウィンドウのサイズを変えられるようになります。しかし、マウスでサイズを変更するとウィンドウが不安定になるようです…。

-wr (ウィンドウの背景色を白に変更)

デフォルトではウィンドウの背景は黒になりますが、このオプションをつけると白になります。

スクリーン設定

起動したいスクリーンの数だけ、-screenオプションを付け足します。各スクリーンの縦と横の長さは<横>x<縦>として設定できます。(xは小文字のXです)
例えば横300で縦600のスクリーンと横400で縦500のスクリーンを起動するなら、-screen 300x600 -screen 400x500というオプションをつけます。

また、-fullscreenオプションを使う事で1個のウィンドウをフルスクリーンで立ち上げる事も可能です。この場合は-fullscreenとすればOKです。(<横>x<縦>は不要です)

バックグラウンド実行

XephyrでXサーバを起動するとターミナルの操作ができなくなるので、&をつけてバックグラウンド実行することをお勧めします。

Xephyrのスクリーンの使い方

上のコマンドでXephyrを実行すると、下の写真のような真っ黒なウィンドウが出て来ます。このウィンドウがディスプレイの役割をしてくれます。
(下の写真では例として:2.0と:2.1の2枚のウィンドウを出してみました)
Screenshot from 2016-11-15 18-11-31.png

各ウィンドウを利用したいときは、それに対応したディスプレイ番号とスクリーン番号を環境変数DISPLAYにセットしてあげればOKです。-displayオプションを使う事もできます。それぞれでxhostなども使えるようになってます。
(各ディスプレイのアクセス権限の設定しておかないとウィンドウに映せない場合があります。-acオプションやxhostコマンドを利用して設定しておきましょう。)

# :2.0にfirefoxを表示
$ export DISPLAY=:2.0
$ firefox
# :2.1にxeyesを表示
$ xeyes -display :2.1

上のコマンドを実行すると、各ウィンドウにfirefoxやxeyesが表示されます。
Screenshot from 2016-11-15 18-13-51.png

:2.0のfirefoxをフルスクリーンモードにすると、:2.0の画面内でフルスクリーンにできます。これは:2.0のウィンドウが1個のディスプレイという認識がされているからです。

Xephyrの終了

ウィンドウのxボタンを押せばウィンドウが消えます。ターミナルでCtrl+Cを押しても消せます。

Xnest

同じようにXサーバをネストするコマンドとして「Xnest」というものがあります。これはXephyrが登場する以前からあった古いコマンドです。
Xephyrが登場したことで用済みとなったためか、Xnestは将来的に廃止することが検討されているそうなので、XサーバをネストしたいときはなるべくXephyrを使うようにしたほうが良いと思われます。

おわりに

実はXephyrの正しい読み方が分かってません。とりあえず「ゼフィール」って読んでますが、「ゼファー」じゃないか?って気もしてます。
正しい読み方をご存知の方、教えていただけると助かります。