目次
= Xvfb
1. 概要
- 仮想的に unix マシン内にディスプレイを作成するための機構.
- メモリ上にディスプレイがあるイメージ.
- X 環境では,DISPLAY 環境変数によって,実際のディスプレイと仮想ディスプレイは切替が可能.
- ターミナルにおける screen のような使い方が可能になる.
2. インストール
2.1 FreeBSD 13.2 くらい? [2023-09-04]
- x11-servers/xorg-vfbserver は、x11-servers/xorg-server に統合された。
- portmaster からのインストールはうまくいかなかったが、以下のコマンドでは成功した。
# portmaster -m "FLAVOR=xvfb" x11-servers/xorg-vfbserver // 失敗 # cd /usr/ports/x11-servers/xorg-servers && make FLAVOR=xvfb install // 成功
2.2 FreeBSD 9.0 Release
- ports で x11-servers/xorg-vfbserver をインストール.
3. 仮想スクリーンの起動方法
# Xvfb :1 -screen 0 1024x768x24 > /dev/null &
- :1 は,X のディスプレイサーバの番号.
- -screen 0 はディスプレイサーバに紐づくスクリーン番号.
- X11 では,サーバもスクリーンも複数制御できるため,その番号を指定する 必要がある.
- 参考 URL
- 上記コマンドで,1024×768 の 24bit カラーなディスプレイを仮想的に作成できる.
4. 利用例
4.1 vnc 経由で仮想ディスプレイを操作する
4.1.1 x11 server のインストール
- net/x11vnc を ports でインストール
- サーバ番号 1,スクリーン番号 0 で立ち上げる
x11vnc -display :1 -bg -nopw -listen localhost -xkb
- -display: サーバ番号の指定.
- -bg:バックグラウンド
- -nopw:パスワードなし
- -listen localhost:ローカルホストからのみの接続を許可
- -xkb:多分キーボード.
4.1.2 vncviewer のインストールから接続
4.1.2.1 [2023-09-04]
- net/vnc はもう無くなった。
- ls /usr/ports/net/ | grep vnc とすれば、いくつか出てくる。
- net/tightvnc があまりパッケージ自体が大きくなくて手軽に見えた
% vncviewer localhost
4.1.2.2 obsolute
- net/vnc を ports でインストール
- 接続
% vncviewer localhost
- 注意:vncviewer は X のアプリケーションなので,ちゃんと起動できるようにすること.
4.2 firefox を Xvfb 上で起動し,スクリーンショットをとる
4.2.1 概要
- firefox は,ディスプレイサーバを指定して起動できるオプションがある.
- また,コマンドラインから URL を叩く方法も存在する.
- これを利用すると,コマンドラインからいろいろなサイトを開きスクリーンショットをとることが可能になる
4.2.2 起動
% firefox -display :1 -remote "openurl(http://www.tsukune.org/)"
- -display:ディスプレイサーバ1番.
- -remote “openurl(http://www.tsukune.org/)“: 指定 URL をタブで開く.
- 以下参考の所の mozilla コマンドラインを見ると,いくつか載っている.
- -remote openurl だと,新しいタブが延々と開くので,vnc 経由で接続し,新しいタブを開かないように preference から設定する方が良い.
4.2.3 スクリーンショット
- ImageMagick 附属の import コマンドを利用.
% import -display :1 -window root test.jpg
- -display :1:1 番のウィンドウサーバを利用
- -window root:window id または名前を指定.root は多分全画面,の意味だと思う.
- test.jpg:出力ファイル名
4.2.4 その他
- 上記の方法だと,アプリケーションを起動すると全画面で表示される.これは window manager を入れていないから.fvwm なり twm なりを起動すれば window が存在するように見せられるが,vnc 経由での操作になるし対して意味はないと思う.
4.2.5 参考
- Xvfb 関係
- firefox コマンドライン関係
- Xvfb + firefox でスクリーンショットを取る
4.3 コマンドラインで display 指定できない場合
- 環境変数 DISPLAY を設定すればよい。
例) export DISPLAY=:1.0