vncserverの代替


概要

vncserverを使ったリモートデスクトップで、Drag and Dropができない。 ファイル・マネージャで Drag and Drop はあまり使わないので気にならなかったが、 Thunderbirdでのメールの振り分けなどもできないので調べて見ることにした。

Xvfbとの組み合わせ

X Virtual Frame Buffer を使えば、モニターの解像度とは関係なく画面の大きさを設定できる。

aptitude install xvfb して、下記のスクリプトで立ち上げに成功。 Drag & Drop もできるようになった。

$ cat bin/xvfbvnc.sh
#!/bin/sh

unset SSH_AUTH_SOCK

xvfb-run -n 1 -s "-screen 0 1280x1024x16" /etc/X11/Xsession &
x11vnc -display WAIT:1 -rfbport 5901 -repeat -forever -shared -localhost -usepw -o ~/.x11vnc-errors &

問題点

  1. 後から接続してきた vncviewer に、先の接続を切断してつなぎ直すという動作ができない。
    • dontdisconnect がデフォルトで有効なので切断しないようだ。このオプションを否定するオプションが見つからない
    • 暫定的に -shared をつけて、後から接続してきたら同時にアクセスできるようにする
  2. キーリピートが効かない
    • xset r on を3回唱えればリピートするようだ。なぜ3回?
      19/11/2011 00:49:16 Disabled X server key autorepeat.
      19/11/2011 00:49:16   to force back on run: 'xset r on' (3 times)
    • xvfbvnc.sh の中では、xset r on を4回実行してもリピートは有効にならない
    • x11vnc に -repeat オプションを付ければリピートするようになった
    • 別の遅いPCで -repeat オプションを付けて立ち上げた場合、重い処理で誤ってキーリピートが効いてしまうことがあるようだ。 x11vncのデフォルトでリピートをしないようにしているのは、このあたりの事情があるのかもしれない
  3. Chromeで右クリックするとメニューが出ずに新しいタブで開く
    • Button Downした後、右に数ドット動いてから Button Upのイベントを送っているのではないか
    • Firefoxではあまり気にならない
    • Gnome Terminalで、キーボードフォーカスを与えるために本文中に左クリックすると、一行選択してしまう
  4. Drag & Drop 中にアイコンが変化しない
  5. vncserverと比べてフォントの扱いが変わった (フォント等が精細になった気がする)
  6. 何か起動する度に Xlib: extension "RANDR" missing on display ":1.0" といったエラーが出る
    • Xvfb :1 +extension RANDR -screen 0 1280x1024x16 & で起動してみたが効果なし
  7. xrdbが実行されない
  8. VPSでは問題ないが、実機にUSBでストレージを接続した際に自動でマウントされない

コンソールのgdm

コンソールのgdmは不要なので削除したい。sudo mv /etc/X11/default-display-manager /etc/X11/default-display-manager.stopped として 起動しないようにしたつもりだが、起動してしまうようだ。

apt-get remove gdm としてみたところ、代わりに gdm3 がインストールされた。 この gdm3 も削除しようとすると、デスクトップ環境の殆どを削除すると言ってきたので gdm3 はそのままにして、再起動時は手動で sudo /etc/init.d/gdm3 stop することにした。

[2012/4/5] /etc/X11/default-display-manager の内容を /usr/sbin/gdm3 から /usr/sbin/nologin に変更すればコンソールのGUIは起動しなくなった。

xrdb

/etc/X11/Xsession.d/30x11-common_xresources にあるように、/etc/X11/Xresources/x11-common/ 下のファイルと、 $HOME/.Xresources を読み込んでから立ち上がるようになっており、コンソールの gdm からログインした場合は、設定されるのだが なぜか xvfb-run から Xsession を起動した場合は読み込まれないようだ。

  1. xvfb-run の -w オプションで 10秒待つようにしてみたが解決しない
  2. /etc/X11/Xsession.d/28x11-common_debug_pause に、message "xrdb wait" と書いたファイルを置いておくと、 起動時 xrdb が読み込まれる前にメッセージ・ダイアログで止まるのだが、こうしておくとなぜか xrdb の読み込みはうまくいく
  3. いずれの場合でも、GNOMEパネルから起動したアプリケーションには設定が渡らない

コンソール画面の転送

「SakuraのVPS」のコントロールパネルからJava Appletを使ってアクセスできるのだが、 SSHトンネルを使ってWindowsのvncviewerからもアクセスできるようにする。

解像度が 800x600以上大きくなってくれない。xrandr コマンドでモニターの 解像度が調べられる。VPSなので実際のモニターにつながっているわけではない。

$ xrandr
xrandr: Failed to get size of gamma for output default
Screen 0: minimum 640 x 480, current 800 x 600, maximum 800 x 600
default connected 800x600+0+0 0mm x 0mm
   800x600        61.0* 
   640x480        60.0  

起動方法

$ sudo vi /etc/X11/xorg.conf
$ sudo /etc/init.d/gdm start
$ sudo x11vnc -display :0 -rfbport 5901 -localhost -auth /var/lib/gdm/:0.Xauth

解像度が低すぎて、メニューからログアウトが実行できない。 vncviewerを切断すると x11vnc が終了するので、

$ sudo /etc/init.d/gdm stop

とすれば止められる。

/etc/X11/xorg.conf: に以下のように足してみたが効果なし

Section "Screen"
       Identifier      "Default Screen"
       Device          "Configured Video Device"
       Monitor         "Configured Monitor"
       DefaultDepth    24
       SubSection      "Display"
               Depth           24
               Modes           "1280x1024"
       EndSubSection
EndSection

Section "ServerLayout"
       Identifier      "Default Layout"
       Screen          "Default Screen"
       InputDevice     "Generic Keyboard"
       InputDevice     "Configured Mouse"
EndSection

/var/log/Xorg.0.log を見ながら "Monitor" Section に何か書けばいいのかもしれない。


トップ   差分 バックアップ リロード   一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2012-07-25 (水) 13:48:14 (1849d)