fnuidesktop-VR — Linux/Wayland向けの仮想デスクトップミラー

Tool

概要

fnuidesktop-VRは、Linux上のWaylandセッションをVR内に持ち込むための軽量なツールです。XDG Desktop PortalとPipeWireを利用してネイティブに画面をキャプチャし、その映像をSteamVRのオーバーレイにミラーリングします。60fpsでの表示を目指し、VRコントローラを使ってマウスクリック(トリガー)、右クリック(サムスティック押し込み)、スクロール(サムスティック上下)およびグリップによる掴み移動やピンチでのリサイズといったインタラクションを提供します。Wayland固有の仕組みとVRインタフェースを橋渡しする実験的な実装です。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 7
  • フォーク数: 0
  • ウォッチャー数: 7
  • コミット数: 2
  • ファイル数: 5
  • メインの言語: Python

主な特徴

  • Waylandネイティブな画面キャプチャ(XDG Desktop Portal + PipeWire)を使用
  • SteamVRオーバーレイへ60fpsでデスクトップミラー表示
  • VRコントローラによるマウス操作(左クリック・右クリック)やスクロール対応
  • グリップで掴んで移動、ピンチでリサイズする直感的なインタラクション

技術的なポイント

fnuidesktop-VRの要は「Wayland側の画面取得」と「VR側の表示・入力連携」をどう繋ぐかにあります。Waylandでは従来のX11のスクリーンキャプチャ手法が使えないため、XDG Desktop PortalとPipeWireを経由して安全にキャプチャを行う方式を採用しています。これにより、Waylandのセキュリティモデルを尊重しつつアプリケーションが画面ストリームにアクセスできます。キャプチャしたフレームはSteamVRのオーバーレイAPI(Overlayを用いたレイヤー描画)に送り、ヘッドセット内で2Dデスクトップを表示します。60fps出力を目標にしているため、フレームの取り込み・フォーマット変換・転送経路での遅延を抑える工夫が重要です。

入力面では、VRコントローラのボタンやスティック入力をマウス操作にマッピングします。READMEの記載から、トリガーで左クリック、サムスティック押し込みで右クリック、サムスティックの上下でスクロール(傾き量で速度調整)、グリップで掴んで移動、ピンチでリサイズという直感的な操作系が実装されていることが分かります。Wayland上での擬似マウスイベント送信は、適切なプロトコル(例:xdg-desktop-portal経由のインタラクションやuinputを使った仮想デバイス)を利用することで実現可能ですが、実装は環境依存の調整が必要です。

コードはPythonで記述されており、少数のファイル構成からプロトタイプ的な実装であることが伺えます。テストファイル(test_wayland_capture.py)が含まれている点から、画面キャプチャ周りの動作検証に重点が置かれているようです。SteamVR連携部分はSteamVRのオーバーレイAPIやOpenVR相当のラッパーライブラリを使って実装される想定で、クロスプロセスでのフレーム共有やテクスチャ変換(特にGPU経由での最小遅延転送)が鍵となります。全体として、WaylandとVRの橋渡しを行うための実験的で実用志向のプロジェクトです。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: file
  • README.md: file
  • main.py: file
  • test_wayland_capture.py: file
  • vr_display.py: file

まとめ

Wayland環境でVR内にデスクトップを持ち込みたい人向けの実験的ながら実用性のあるプロジェクトです。(約50字)

リポジトリ情報:

READMEの抜粋:

fnuidesktop-vr

Virtual Desktop alternative for Linux/Wayland. Mirrors your desktop to a SteamVR overlay with controller-based mouse input, scrolling, and grab-to-move/pinch-to-resize interaction.

Features

  • Screen capture via XDG Desktop Portal + PipeWire (Wayland native)
  • 60fps desktop mirroring to SteamVR overlay
  • Controller interaction:
    • Trigger: Left click
    • Thumbstick click: Right click
    • Thumbstick up/down: Scroll (speed follows tilt amount)
    • **Grip (single)…