ベースプロトコル

MetaVNCは、TightVNCの1.3以降で採用されているprotocol 3.7tをベースにしてプロトコルを拡張しています。MetaVNCはprotocol 3.3, 3.7, そして3.7tをサポートするどんなVNCサーバとも接続できるはずです。

MetaVNC拡張

MetaVNCは非公式のメッセージタイプ40〜49、また非公式のエンコードタイプ0xFFFFFF27を使っています。これらの拡張は、サーバーとクライアントがVNCプロトコル3.7tで接続され、サーバー側とクライアント側のケイパビリティリストが一致しないかぎり使いません。

Transparent Region

透過領域の前回からの差分を送ります。増分と減分それぞれの領域を送ります。 通常のスクリーンアップデートと同様、インクリメンタルアップデートを要求された場合は差分のみ、フルアップデートを要求された場合は全領域を送ります。 詳しくは"rfbproto.h"のTransparent Rectangulars Encodingを参照ください。

Window Control

クライアント側からウィンドウの制御またはアプリの起動に使います。詳しくは"rfbproto.h"のrfbWindowControlMsg?を参照ください。

  • rfbWindowControlNone?
    状態をリフレッシュします。サーバは全状態を送りなおします。
  • rfbWindowControlLaunch?
    idに対応するアプリを起動します。
  • rfbWindowControlClose?
    idに対応するウィンドウを閉じます。
  • rfbWindowControlRestore?
    idに対応するウィンドウを最小化または最大化状態から元に戻します。
  • rfbWindowControlMinimize?
    idに対応するウィンドウを最小化します。
  • rfbWindowControlMaximize?
    idに対応するウィンドウを最大化します。
  • rfbWindowControlSetFocus? (version 0.6.0以降)
    idに対応するウィンドウにフォーカスを移します。id=0の場合は全ウィンドウがフォーカスを失います。

Window State

サーバー側からウインドウの状態の通知、また(freedesktop.orgスタイルでない)アプリケーションメニュー内容の通知に使います。ウィンドウ名またはメニュー名はUTF-8形式の文字列で通知します。 詳しくは"rfbproto.h"のrfbWindowStateMsg?を参照ください。

  • rfbWindowStateClosed?
    idに対応するウィンドウが閉じられたことを示します。
  • rfbWindowStateRunning?
    idに対応するウィンドウが実行中であることを示します。
  • rfbWindowStateMinimized?
    idに対応するウィンドウが最小化状態であることを示します。
  • rfbWindowStateMaximized?
    idに対応するウィンドウが最大化状態であることを示します。
  • rfbWindowStateFocused? (version 0.6.0以降)
    idに対応するウィンドウがフォーカス状態であることを示します。 あるウィンドウがフォーカスインしたとき、他のウィンドウがフォーカスアウト状態であることは自明のため、フォーカスアウト時には状態を通知しません。 id=0(存在しないウィンドウ)の場合は、全ウィンドウがフォーカスアウトしたことを示します。
  • rfbWindowStateUnknown?
    ウィンドウ状態がわからなくなったことを示します。ウィンドウ状態とメニューはクリアします。(idは未使用)
  • rfbWindowStateLauncher?
    idとメニュー項目を渡します。(freedesktop.orgスタイルでない)

Server Data Request (version 0.5.0以降)

クライアント側からサーバ側へデータを要求する際に使います。 具体的にはクライアントが期待するロケールとアイコン設定の通知に使っています。 詳しくは"rfbproto.h"のrfbServerDataReqMsg?を参照ください。

データタイプ(dataType)として以下が使えます。

  • rfbServerDataMenuPref?
    クライアント側のメニュー設定を指示します。(ロケール文字列, freedesktop.org形式の場合のみ)
    この指示以降、サーバがメニュー項目を通知する時、指示されたロケールを使います。
  • rfbServerDataIconPref?
    クライアント側のアイコン設定を指示します。(色の深さ(BPP), サイズ, フォーマット)
    この指示以降、サーバが新しいウィンドウの状態またはメニュー項目を通知するたびに、サーバは対応するアイコンをクライアント側に送ります。

Server Data (version 0.5.0以降)

サーバー側からクライアント側へデータを転送する際に使います。 具体的にはアイコンとfreedesktop.orgスタイルのメニュー項目の転送に使っています。詳しくは"rfbproto.h"のrfbServerDataMsg?を参照ください。

データタイプ(dataType)として以下が使えます。

  • rfbServerDataMenuItem?
    idとメニュー項目を渡します。("Desktop-File Id"に続いてfreedesktop.orgのdesktop entryの内容(一部)) 文字列は指示されたロケールに合致するものだけ送信します。
  • rfbServerDataMenuIcon?
    idとアイコンデータを渡します。(色の深さ(BPP), サイズ, フォーマット, バイナリデータ)
  • rfbServerDataWindowIcon?
    idとアイコンデータを渡します。(色の深さ(BPP), サイズ, フォーマット, バイナリデータ)

Key Focus (version 0.2.6以降)

サーバーに対して、キーボードのフォーカスが入ったことと失われたことを通知します(メッセージタイプ49)。複数のサーバーを融合して表示したとき、キーフォーカスがどこにあるのか分からなくなってしまうために入れた機構です。
詳しくは"rfbproto.h"のrfbKeyFocusMsg?を参照ください。

Saving Client State (obsolete)

廃止予定(メッセージタイプ40,41)

Child Servers

MetaVNCには、サーバーがその子供たちを通知する機能があります(メッセージタイプ45)。この拡張は、サーバーをグループ化することを目指して作りました。詳細は記述中。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-07-28 (土) 11:00:24 (3562d)