= [[Xvfb]]
----
====== - 概要 ======
* 仮想的に unix マシン内にディスプレイを作成するための機構.
* メモリ上にディスプレイがあるイメージ.
* X 環境では,DISPLAY 環境変数によって,実際のディスプレイと仮想ディスプレイは切替が可能.
* ターミナルにおける screen のような使い方が可能になる.
====== - インストール ======
===== - 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 // 成功
===== - FreeBSD 9.0 Release =====
* ports で x11-servers/xorg-vfbserver をインストール.
====== - 仮想スクリーンの起動方法 ======
# Xvfb :1 -screen 0 1024x768x24 > /dev/null &
* :1 は,X のディスプレイサーバの番号.
* -screen 0 はディスプレイサーバに紐づくスクリーン番号.
* X11 では,サーバもスクリーンも複数制御できるため,その番号を指定する 必要がある.
* 参考 URL
* http://xjman.dsl.gr.jp/X11R6/X11/CH02.html
* 上記コマンドで,1024x768 の 24bit カラーなディスプレイを仮想的に作成できる.
====== - 利用例 ======
===== - vnc 経由で仮想ディスプレイを操作する =====
==== - x11 server のインストール ====
* net/x11vnc を ports でインストール
* サーバ番号 1,スクリーン番号 0 で立ち上げる
x11vnc -display :1 -bg -nopw -listen localhost -xkb
* -display: サーバ番号の指定.
* -bg:バックグラウンド
* -nopw:パスワードなし
* -listen localhost:ローカルホストからのみの接続を許可
* -xkb:多分キーボード.
==== - vncviewer のインストールから接続 ====
=== - [2023-09-04] ===
* net/vnc はもう無くなった。
* ls /usr/ports/net/ | grep vnc とすれば、いくつか出てくる。
* net/tightvnc があまりパッケージ自体が大きくなくて手軽に見えた
% vncviewer localhost
=== - obsolute ===
* net/vnc を ports でインストール
* 接続
% vncviewer localhost
* 注意:vncviewer は X のアプリケーションなので,ちゃんと起動できるようにすること.
===== - firefox を Xvfb 上で起動し,スクリーンショットをとる =====
==== - 概要 ====
* firefox は,ディスプレイサーバを指定して起動できるオプションがある.
* また,コマンドラインから URL を叩く方法も存在する.
* これを利用すると,コマンドラインからいろいろなサイトを開きスクリーンショットをとることが可能になる
==== - 起動 ====
% firefox -display :1 -remote "openurl(http://www.tsukune.org/)"
* -display:ディスプレイサーバ1番.
* -remote "openurl(http://www.tsukune.org/)": 指定 URL をタブで開く.
* 以下参考の所の mozilla コマンドラインを見ると,いくつか載っている.
* -remote openurl だと,新しいタブが延々と開くので,vnc 経由で接続し,新しいタブを開かないように preference から設定する方が良い.
==== - スクリーンショット ====
* ImageMagick 附属の import コマンドを利用.
% import -display :1 -window root test.jpg
* -display :1:1 番のウィンドウサーバを利用
* -window root:window id または名前を指定.root は多分全画面,の意味だと思う.
* test.jpg:出力ファイル名
==== - その他 ====
* 上記の方法だと,アプリケーションを起動すると全画面で表示される.これは window manager を入れていないから.fvwm なり twm なりを起動すれば window が存在するように見せられるが,vnc 経由での操作になるし対して意味はないと思う.
==== - 参考 ====
* Xvfb 関係
* http://blog.5v-gnd.net/archives/720
* firefox コマンドライン関係
* https://developer.mozilla.org/ja/docs/Command_Line_Options
* Xvfb + firefox でスクリーンショットを取る
* http://mick.blog16.jp/index.php/main/2008/02/25/p144
===== - コマンドラインで display 指定できない場合 =====
* 環境変数 DISPLAY を設定すればよい。
例)
export DISPLAY=:1.0