WebMKS コンソールを等倍にさせる
まとめ
- WebMKS のスケーリングがうっとうしい
- スケーリングさせないよう wmks.js を矯正
- 転んでも泣かない
- 本環境は vCenter Server 6.0.0b の仮想アプライアンス
vSphere Web Client のコンソール
Web Client のコンソールは現在 2 種類あります。
- HTML5 + SPDY で実装された WebMKS コンソール
- ネイティブ アプリケーションである VMware Remote Console (VMRC)
それぞれ起動箇所が異なります。
WebMKS コンソールは、仮想マシンのアクション メニューの「コンソールを開く」
または、仮想マシンのコンテキスト メニューの「コンソールを開く」から開くことが出来ます。
WebMKS のコンソールは以下のように、ブラウザの新しいタブで表示されます。
VMRC は、事前に VMRC 7.x をダウンロード/インストールし仮想マシンを左ペインで選択した後に、「リモート コンソールを開く」から開くことが出来ます。
VMRC のコンソールは、以下のようにネイティブ アプリケーションとして立ち上がってきます。
2 つのコンソールを比べて分かるように、WebMKS ではブラウザの Canvas の広さに合わせて自動的にスケーリングされてしまいます。1280×1024 などの Windows の GUI コンソールであれば問題無いですが、640×480 の TUI コンソールでは不必要に拡大されてしまい少々見苦しくもあります。(個人的主観です)
なお、GUI コンソールでも 1600×1200 などの大解像度の場合、ブラウザの Canvas に合わせて縮小方向にスケーリングされます。この場合、文字が潰れてしまい これはこれで使いにくい代物になります。
このスケーリングは、CSS の Transform によって実現され、ブラウザのウィンドウサイズに合わせて自動的に変更されます。ということで WebMKS を実装している JavaScript ファイル (wmks.js) を変更して強制的にスケーリングをさせずに等倍表示させるようにします。
vmks.js の修正
wmks.js は仮想アプライアンスであれば、/usr/lib/vmware-vsphere-client/server/work/deployer/s/global/38/0/container-app-war-6.0.0.war/js/wmks.js にあります。パス間にある global/38/0 あたりは変動するかも知れません。find や grep で適宜検索して下さい。
この wmks.js の 9838 行目付近に、ウィンドウのリサイズ イベント時に呼ばれる関数 rescaleOrResize が定義されています。
WMKS.widgetProto.rescaleOrResize = function(tryFitGuest) {
var newScale = 1.0, x = 0, y = 0;
var parentWidth = this.element.width(),
parentHeight = this.element.height();
...snip..
この rescaleOrResize 内でスケーリングの再設定を行っているので、この処理を全てすっ飛ばすよう投げやりに修正します。
WMKS.widgetProto.rescaleOrResize = function(tryFitGuest) {
return;
var newScale = 1.0, x = 0, y = 0;
var parentWidth = this.element.width(),
parentHeight = this.element.height();
...snip..
はい、関数の冒頭に return を付けて後続の処理を省いています。この関数の中では Canvas の表示位置を中央に寄せる処理も含まれているので、この投げやりな return の副作用として、コンソールが左寄せになってしまいます。スケーリングの鬱陶しさに比べれば、まぁ我慢できる範囲かな…と。(個人的主観です)
この編集を保存した後、再度コンソールを開いてみましょう。今度はスケーリングされなくなっているはずです。もし、まだスケーリングされるようでしたらばブラウザのリロードを行ってみましょう。
注意
マニュアルにも載っていない、展開された War ファイルの一部を編集する、といったサポート上等な変更です。転んでも泣かない環境で気が向いたらお使い下さいませ。