gtk-vnc

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動
gtk-vnc
開発元 gtk-vnc community [1]
最新版 0.7.2 / 2018年3月23日(2年前) (2018-03-23
リポジトリ gitlab.gnome.org/GNOME/gtk-vnc.git
対応OS クロスプラットフォーム
種別 GTKウィジェット
ライセンス LGPL
公式サイト Projects/gtk-vnc - GNOME Wiki!
テンプレートを表示

gtk-vncとは、GTK+を用いたVNC Viewerライブラリを提供するオープンソースプロジェクトで、 VNC用の共通APIを提供する。 このライブラリを使うことにより、VNC viewerを数十行程度で実装することが出来る。

また、通常のVNCの認証プロトコルに加えて、 IPv6のサポートや、 VeNCrypt拡張によるTLS/SSLによる暗号化通信がサポートされている。

現在は、C言語及びPythonから本APIを呼び出すことが出来る。 また、他の使い方としては、VNC viewerのプラグインとして、Webブラウザから使うことが出来る。

本ライブラリを使っているアプリケーションとしては、Vinagre、Virtual_Machine_Manager、KVM Testなどがある。また、gtkvnc配布パッケージに添付されているCとPythonで書かれたgvncviewerもある。

本プロジェクトのメンテナーは、Anthony Ligori、Daniel Berrange、John Wendellである。

ステータス[編集]

gtk-vncは、以下のエンコーディングをサポートしている。

  • Raw
  • Copyrect
  • RRE
  • Hextile
  • ZRLE
  • Tight

さらに、以下の擬エンコーディングをサポートしている。

  • DesktopResize
  • PointerChangeType
  • RichCursor
  • XCursor
  • ExtendedKeyEvent

以下のセキュリティタイプ(認証)をサポートしている。

  • None
  • VNC Auth
  • VeNCrypt

RFBプロトコルは、3.3, 3.7, そして3.8をサポートしている。

TODOリスト[編集]

  • リモートゲストとのAudio/USB/Dataをやり取りする機能追加
  • スケールするフレームバッファサポート
  • スループットを向上するために動的にプロトコル(圧縮等)を変更できる機能追加
  • APIドキュメント
  • サムネイル(小さい描画)サポート
  • フレームバッファをN秒以上の間隔で要求する'Quiesced' モードサポート(サムネイルサポート用)

ソフトウェア構成[編集]

ソフトウェアの構成は、大まかに言って、3つに分かれている。一つは、examples/gvncviewer.cであり、VNC viewerのメインルーチンである。次は、GTK-VNC widgetとなるsrc/vncdisplay.cである。最後は、vnc_coroutine()@src/vncdisplay.cから呼び出されるsrc/gvnc.cというVNCのネットワーク通信プロトコル層である。このvnc_coroueine()は、メインとは別スレッド(コルーチン)として稼働している。 また、ソフトウェア規模は、1万行程度であり、比較的小さい。

動作は、2つのスレッドが、交互に動く形になっている。1つは、グラフィックインターフェースのメインスレッドであり、もう1つはネットワーク通信のvnc_coroutine()である。 vnc_coroutine()は、coroutine_yieldでCPUを離し、メインスレッドにCPUを譲る。そして、I/O割り込みが上がったり、メインスレッドの処理が一段落しCPUが空くなどのある一定条件を満たすと、coroutine_yieldto()が実行され、メインスレッドからCPUを奪う過程を繰り返す。


外部リンク[編集]

メンテナ[編集]