Sunday 12 June 2016

Multi Display

まぁね。デイトレーダみたいでかっこいいのかも知れないけど。僕はあまり好きじゃないです。

* システムデバッグとかは必然的に複数ディスプレイになる

わけなのだけど面倒くさいと思う方ですね。そもそもマルチウィンドなのに何故物理的なディスプレイが必要なのかってことだけど...

ソニー時代(1990)辺りは、ワークステーション(死語)の横にMacを置いて、Now Update を立ち上げておくとかは流行っていたな。

ど近眼なのでRetinaの解像度を上げた一画面を広く使う方が好きですね。その方が集中できる感じ。学生はしょぼい13inchだったりするから外部ディスプレイが欲しいんだろうな。ディスプレイだけ用意してくれという要望もあったようです。Retina買えよ、自分の刀だろ、とも思うが、今の学生は貧乏だから。

最近は4K上で学生とプログラミングしていることが多いので、メニューだけ小さいとかの羽目に。InteliJは割と4K対応がまともかも。

でも、TreeVNCをマルチディスプレイに対応するってのはやらないといけないわけで、

http://seeker-s-eye.blogspot.jp/2015/08/treevnc.html

とかやっていたみたい。なのだがRFBのマルチディスプレイ拡張はAppleは使ってないらしい。

なので自分でJava経由で複数ディスプレイの情報を取って拡張。 Shareする方には「どっちをShareする?」ってのが出るわけですが、

* VNCでは、複数のディスプレイを含む大きな座標系で送られてくる

そうそう、あのMacの複数画面の設定があるじゃないですか、あれが、そのまま送られてくる感じ。それを

* 指定した画面の部分に対してだけ UpdateRectangleRequest

という仕組みですね。その大きな仮想画面がそのまま表示されても困るので、

* その大画面の一部の画面を拡大表示してやれば良い

わけだ。が、なかなかなおらない。手動で調整してました。

なので、自分でコードを見ることに。学生がやった分で大体要素はそろっていて、自分の複数ディスプレイ、相手の複数ディスプレイの情報は(TreeVNCのプロトコル経由で)取れているらしい。

コードも一見正しそうだが、

* 表示は正しくない

まあそうだよね。そんなものだよ。「なんか1.5倍scrollしてやると合う」みたいな話もあったのですが、

* 画面の大きさに合わせてZoomする

ので、そのZoom率に合わせてscroolする必要があるという落ちだったようです。わかれば簡単だ。そんなもん。

No comments: