vncserverの代替
vncserverを使ったリモートデスクトップで、Drag and Dropができない。 ファイル・マネージャで Drag and Drop はあまり使わないので気にならなかったが、 Thunderbirdでのメールの振り分けなどもできないので調べて見ることにした。
「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 に何か書けばいいのかもしれない。
X Virtual Frame Buffer を使えば、モニターの解像度とは関係なく画面の大きさを設定できる。
aptitude install xvfb して、下記のスクリプトで立ち上げに成功。 Drag & Drop もできるようになった。
$ cat bin/xvfbvnc.sh #!/bin/sh unset SSH_AUTH_SOCK export DISPLAY=:1 Xvfb :1 -screen 0 1280x1024x16 & sleep 2 [ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources /etc/X11/Xsession & x11vnc -rfbport 5901 -forever -shared -localhost -usepw -o ~/.x11vnc-errors &
止めるときは、killall Xvfb でよい。 起動したシェル(ssh ログイン)を終了(ログアウト)してもデスクトップは存在し続けるようだ。
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 することにした。
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)