2014/01/21(Tue)UltraVNC Viewerの接続時の初期ウィンドウ表示ディスプレイ変更方法

2014/01/21 1:29 Software::Windows
VNCプロトコルを扱えるリモート制御サーバー/ビューアは世にたくさんありますが、私は予てよりUltraVNCを使っています。使い始めた当初はメンテが盛んな日本語パッチがあったのですが、それが終了し英語版だけになった今でも、使いやすいのでそのまま継続使用してます。

でも問題が一つ。
UltraVNC Viewerをマルチディスプレイ、しかも4枚といったように広範囲なデスクトップ環境で使うと、意図しないディスプレイにウィンドウが出てしまう。繋いでから最初にウィンドウを希望するディスプレイに持ってくる作業が面倒。
今回はこれをナントカする方法。

対象

OS
Windows 7 x64
UltraVNC Viewer
v1.1.9.3で検証済。
どうやら[BUG] Win7 vncviewer Gray Screen w/1.0.9.6.1 - 1.0.9.6 worksによると、v1.0.9.6では紹介する機能が有効にならない模様。→4/2追記: 1.0.9.6.2では有効にならないことを確認。

現象

いくつかのマルチディスプレイ環境でのUltraVNC Viewerの立ち振る舞いを見ていると、どうもWindowsのディスプレイ識別番号のうち1番のディスプレイが起動時に表示するウィンドウの表示位置として選ばれている様子。
例えば私の環境だと、一番右のディスプレイ。
uvnc_display.png

しかし、私は右から2番目のディスプレイがメインなので、ここに表示させたいわけだ。

Windowsのディスプレイ識別番号を変える?

と決まれば、この番号をどうにかして自分の思い通りに変えたいと思うのが普通だろうが、これがうまくいかない。
一説にはケーブルを挿した順という話もあるのだが、私が検証する限りそうではなさそう。

おそらく、PC側のデバイスによって認識の順序が決まっているのだと思う。
上記の例は、
  1. PCI-eに挿したグラフィックカードのDisplayPort端子に接続
  2. PCI-eに挿したグラフィックカードのHDMI端子に接続
  3. PCI-eに挿したグラフィックカードのDVI端子に接続
  4. オンボードグラフィックカードのDVI端子に接続
という順番で番号が振られたようだ。他にも端子が余っているので、繋いでみればその規則性がわかるかもしれないが、きっと製品固有のものだろう。

そんなことをしなくても

実はUltraVNC Viewerの設定を保存する*1ファイルに一行増やすだけでよい。
.vncファイルをテキストエディタなどで開き、[options]セクションの末尾SelectedScreen=x(xは上記のディスプレイ識別番号)を書けば、次回からそのディスプレイで表示してくれる。
[connection]

host=.....
port=.....
....

[options]

use_encoding_0=1
...
SelectedScreen=3
設定のパネルが追いついていないのか、どうにもGUI上から設定する方法が見つけられないでいるのだが、これで接続初回表示時から希望のディスプレイに表示出来るので、よりストレスフリーなVNC生活が送れると思う。

ちなみに3rd partyのソフトで、希望のディスプレイに指定したウィンドウを表示させる(というよりhookして移動させる)ようなものもあるが、上のように対応できるので今回は不要。

*1 : 一度どこかのVNCサーバに接続後、システムメニュー(ウィンドウ左端のアイコンをクリックすると出るメニュー)から.vncという拡張子のファイルに現在の設定を保存できる