SnapPea — COSMIC向けスクリーンショットポータル
概要
SnapPeaはCOSMICデスクトップ用のスクリーンショット「ポータル」実装で、キャプチャ後に画像へ注釈(矢印・矩形・テキスト等)を付けられる機能を持ちます。プロジェクトは既存の xdg-desktop-portal-cosmic をベースにしつつ、同等のポータルインターフェースを提供することで、cosmic-screenshot から発行される D-Bus リクエストを差し替えて処理できる点が特徴です。Rustで書かれており、デスクトップ統合やユーザーのスムーズな操作を重視した設計になっています。デモGIFやロゴは data ディレクトリに含まれており、ソースは Cargo でビルド可能です。
リポジトリの統計情報
- スター数: 4
- フォーク数: 0
- ウォッチャー数: 4
- コミット数: 30
- ファイル数: 9
- メインの言語: Rust
主な特徴
- COSMIC のスクリーンショットポータルインターフェースと互換:xdg-desktop-portal-cosmic と同じインターフェースを実装
- 注釈機能:キャプチャ後に簡易なアノテーションが可能
- Rust実装:安全性と高速化を狙った実装言語
- 軽量で差し替え可能:適切に設定すれば既存の cosmic-screenshot のハンドラを置き換え可能
技術的なポイント
SnapPea はポータルインターフェース(xdg-desktop-portal 系)を再現することで、COSMIC のスクリーンショットワークフローに自然に統合されます。具体的には、cosmic-screenshot などが発行する D-Bus メッセージを受け取り、スクリーンショットの取得、画像の一時保存、注釈用 UI の起動、編集結果の返却という一連の流れをハンドリングする役割を担います。Rust を採用することでメモリ安全性が担保され、非同期処理やファイル I/O、IPC(D-Bus)との連携を効率的に扱えます。
注釈機能はアプリ内で直接画像に描画する小さなツール群を想定しており、矩形やフリーハンド、テキスト挿入、色や線幅の選択といった基本的な編集操作をサポートする設計思想が伺えます。ビルド周りは Cargo を用いる標準的な Rust プロジェクト構成で、data ディレクトリにロゴやデモ GIF が含まれているため、ビジュアル確認がしやすくなっています。インストールや有効化の際は、ポータルサービスの D-Bus 名やデスクトップ側の設定を上書きする手順が必要で、既存の xdg-desktop-portal-cosmic と競合しないようにサービス登録を調整する運用が要求されます。コードベースは比較的小規模(ファイル数が少ない)であるため、拡張やカスタマイズ、他のポータル機能の取り込みも行いやすい構造です。
プロジェクトの構成
主要なファイルとディレクトリ:
- .gitignore: file
- Cargo.lock: file
- Cargo.toml: file
- README.md: file
- data: dir
…他 4 ファイル
まとめ
COSMIC向けに特化した軽量で安全なスクリーンショット&注釈ポータル実装。差し替え運用向け。
リポジトリ情報:
- 名前: snappea
- 説明: A screenshot portal implementation for the COSMIC desktop environment with annotation capabilities
- スター数: 4
- 言語: Rust
- URL: https://github.com/hojjatabdollahi/snappea
- オーナー: hojjatabdollahi
- アバター: https://avatars.githubusercontent.com/u/2222199?v=4
READMEの抜粋:
SnapPea
A screenshot portal implementation for the COSMIC desktop environment with annotation capabilities.
SnapPea Demo
Disclaimer: This project is based on xdg-desktop-portal-cosmic with added features. It implements the same screenshot portal interface. When set up correctly, dbus messages sent by cosmic-screenshot will be handled by SnapPea instead of xdg-desktop-portal-cosmic (only…