= [[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