このプロジェクトは、Rustで開発されたクロスプラットフォームのリモートデスクトップアプリケーションです。Windows、macOS、Linuxに対応しており、デスクトップクライアント、Webクライアント、サーバーコンポーネントから構成されています。
- マルチプラットフォーム対応(Windows、macOS、Linux)
- デスクトップクライアントとWebクライアント
- 複数の接続方式(WebSocket、WebRTC、TCP)
- 画面共有と遠隔操作
- ファイル転送
- クリップボード共有
- システム情報のモニタリング
- マルチディスプレイサポート
- 画像圧縮(WebP、JPEG、PNG)
- エンドツーエンド暗号化(AES-GCM、ChaCha20Poly1305)
- Windows 10/11、macOS 10.15以降、または最新のLinuxディストリビューション
- 画面共有のための十分なCPUリソース
- 最低8GBのRAM
- デスクトップクライアント: Windows 10/11、macOS 10.15以降、または最新のLinuxディストリビューション
- Webクライアント: 最新のChrome、Firefox、Edge、Safariブラウザ
remote-desktop/
├── common/ # 共通ライブラリ
│ ├── src/
│ │ ├── crypto/ # 暗号化モジュール
│ │ ├── compression/ # 画像圧縮モジュール
│ │ ├── protocol/ # プロトコル定義
│ │ └── utils/ # ユーティリティ関数
│ └── Cargo.toml
│
├── server/ # サーバー実装
│ ├── src/
│ │ ├── capture/ # 画面キャプチャモジュール
│ │ ├── input/ # 入力ハンドリング
│ │ ├── network/ # ネットワーク管理
│ │ ├── auth/ # 認証
│ │ └── main.rs # サーバーエントリーポイント
│ └── Cargo.toml
│
├── client/ # デスクトップクライアント
│ ├── src/
│ │ ├── ui/ # eframe/eguiベースのUI
│ │ ├── network/ # サーバー接続
│ │ ├── input/ # リモート入力送信
│ │ └── main.rs # クライアントエントリーポイント
│ └── Cargo.toml
│
├── web-client/ # Webクライアント
│ ├── src/ # Rust/Yew/WebAssembly
│ ├── public/ # 静的アセット
│ ├── package.json # NPM設定
│ └── webpack.config.js # Webpack設定
│
├── docs/ # ドキュメント
│ ├── protocol.md # プロトコル仕様
│ └── api.md # API仕様
│
├── tests/ # 統合テスト
│
├── Cargo.toml # ワークスペース設定
└── README.md # このファイル
- Rustツールチェーンをインストール
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh- リポジトリをクローン
git clone https://github.com/yourusername/remote-desktop-rs.git
cd remote-desktop-rs- サーバーをビルド
cd server
cargo build --release- デスクトップクライアントをビルド
cd ../client
cargo build --release- Webクライアントをビルド
cd ../web-client
npm install
npm run buildcd server
cargo run --releaseサーバーはデフォルトで9090ポートをリッスンします。
cd client
cargo run --release起動後、サーバーのIPアドレスとポートを入力して接続します。
開発環境での実行:
cd web-client
npm run startブラウザで http://localhost:8080 を開き、サーバーのIPアドレスとポートを入力して接続します。
- Rust 1.68.0以降
- Node.js 16.x以降(Webクライアント用)
- 画像処理ライブラリ(WebP、JPEG、PNGサポート用)
サーバーとクライアントはさまざまな機能フラグを持っています:
# サーバー(すべての機能を有効化)
cargo build --release --features full
# クライアント(WebP圧縮サポートを有効化)
cargo build --release --features webp-supportMIT
エラー修正やバグ報告、機能リクエストは、GitHubのIssuesにて受け付けています。プルリクエストも歓迎します。
このプロジェクトは以下のオープンソースライブラリに依存しています:
- Rust、WebAssembly
- Yew、egui、eframe
- tokio、tungstenite
- serde、image、webp
- その他多くのRustエコシステムライブラリ