スタンドアロンウィンドウマネージャーにおける画面録画問題のトラブルシューティング
私は長年、WaylandウィンドウマネージャーであるLabwcを使っています。当初は会社のコンピューターでUbuntuを使っていましたが、後にミニPCを組み立ててArchに切り替えました。
全体として、自分のニーズに合わせてカスタマイズしたデスクトップ環境を構築でき、GnomeやKDEのようなモノリスを使うよりもはるかに管理しやすくなりました。例えば、Win + Enterキーを押すといつでもターミナルがポップアップ表示され、Win + Hキーで非表示にできるのは非常に便利で、作業効率が飛躍的に向上しました。
デスクトップのコアコンポーネントは一つ一つ自分で厳選し、設定ファイルはGitHubのdotfilesを使って管理しています。もしパソコンが壊れても、いつでも再インストールして使い慣れた環境に戻ることができます。
このミニPCはAMDの統合グラフィックを搭載しているので、Dota 2とCounter-Strike 2を問題なく実行できます。
全て順調に見えましたが…
ある晩、会社のパートナーとある問題に取り組んでいました。彼らは私のリアルタイム端末操作を確認したいと考えており、そのためにはFeishuの画面共有機能を使う必要がありました。共有を有効にすると、問題が発生しました。画面が真っ黒になったのです。
突然の展開で、こんな事態になるとは思ってもいませんでした。LabWC + Arch環境で画面共有をテストしたことは一度もありませんでした。本当に困りました。生計を立てるためには、これ以上の努力はできません。最終的にはスマートフォンの背面カメラで画面を録画することにしましたが、カメラの位置がずれていたり、照明が暗すぎたりと、なかなかうまくいきませんでした。
ある週末、Dota 2をプレイ中に、ブーツを購入しても自動的に売却されてしまうバグに遭遇しました。試合の録画をダウンロードして共有した後、OBSを開いても画面録画が機能していませんでした。
リアルタイムの画面共有、つまりライブストリーミングの需要は依然として高く、この問題は解決が必要です。オンラインで検索しても情報はほとんど見つからず、問題となっているコンポーネントを正確に特定することさえ困難です。
この問題は非常にニッチなものです。
- Linuxユーザーは少ない。
- スタンドアロンのウィンドウマネージャーを使用しているLinuxユーザーはさらに少ない。
- 上記の両方の条件を満たし、かつ画面共有を必要とするユーザーはさらに少ない。
1. 解決策
解決策は簡単です。xdg-desktop-portal
パッケージをインストールしてください。
1sudo pacman -S xdg-desktop-portal
2sudo pacman -S xdg-desktop-portal-wlr
xdg-desktop-portal-wlr は xdg-desktop-portal のバックエンド実装です。Gnome/KDE のような成熟したデスクトップ環境を使用している場合は、xdg-desktop-portal-gnome と xdg-desktop-portal-kde が既にプリインストールされています。
Labwc はスタンドアロンのウィンドウマネージャーであるため、デフォルトでは xdg-desktop-portal-wlr が含まれていないため、画面が真っ黒になったり、ストリーミングが不可能になったりすることがあります。 Wayland 環境での画面共有では通常、Pipewire を使用して xdg-desktop-portal を呼び出し、これが現在のデスクトップ環境の xdg-desktop-portal バックエンドを呼び出してプロセス全体を完了します。デスクトップ環境によってバックエンドの実装は異なります。こちらのリストを参照してください。
1➜ ~ echo $XDG_CURRENT_DESKTOP
2wlroots
上記の環境変数の出力から、wlroots のバックエンド実装は xdg-desktop-portal-wlr
であると推測できます。そのため、このパッケージは別途インストールする必要があります。
1➜ ~ ls -al /usr/share/xdg-desktop-portal
2total 20
3drwxr-xr-x 1 root root 190 6月10日 12:13 ./
4drwxr-xr-x 1 root root 5018 6月12日 12:36 ../
5-rw-r--r-- 1 root root 24 3月24日 10:58 gtk-portals.conf
6-rw-r--r-- 1 root root 32 5月9日 04:32 hyprland-portals.conf
7-rw-r--r-- 1 root root 67 5月22日 16:03 labwc-portals.conf
8drwxr-xr-x 1 root root 68 6月7日 11:22 portals/
9-rw-r--r-- 1 ルート ルート 423 6月9日 07:51 sway-portals.conf
10-rw-r--r-- 1 ルート ルート 24 8月9日 2024 wlr-portals.conf
11➜ ~ ls -al /usr/share/xdg-desktop-portal/labwc-portals.conf
12-rw-r--r-- 1 ルート ルート 67 5月22日 16:03 /usr/share/xdg-desktop-portal/labwc-portals.conf
13➜ ~ ls -al /usr/share/xdg-desktop-portal
14total 20
15drwxr-xr-x 1 ルート ルート 190 6月10日 12:13 ./
16drwxr-xr-x 1 ルート ルート 5018 6月12日12:36 ../
17-rw-r--r-- 1 ルート ルート 24 3月24日 10:58 gtk-portals.conf
18-rw-r--r-- 1 ルート ルート 32 5月9日 04:32 hyprland-portals.conf
19-rw-r--r-- 1 ルート ルート 67 5月22日 16:03 labwc-portals.conf
20drwxr-xr-x 1 ルート ルート 68 6月7日 11:22 portals/
21-rw-r--r-- 1 ルート ルート 423 6月9日 07:51 sway-portals.conf
22-rw-r--r-- 1 ルート ルート 24 8月9日 2024 wlr-portals.conf
23➜ ~ cat /usr/share/xdg-desktop-portal/labwc-portals.conf
24[preferred]
25default=wlr;*
26org.freedesktop.impl.portal.Inhibit=none
27➜ ~ cat /usr/share/xdg-desktop-portal/sway-portals.conf
28[preferred]
29default=gtk
30org.freedesktop.impl.portal.ScreenCast=wlr
31org.freedesktop.impl.portal.Screenshot=wlr
32# xdg-desktop-portal-gtk の実装では org.gnome.SessionManager と org.freedesktop.ScreenSaver が使用されていますが、どちらも Sway では実装されていません。そのため、一部のプログラム (例: Firefox) では Wayland の idle-inhibit プロトコルが代わりに使用されますが、Sway ではこのプロトコルが実装されています。
33org.freedesktop.impl.portal.Inhibit=none
アーキテクチャのドキュメントをご覧ください。XDG_CURRENT_DESKTOP 環境変数は、どの設定ファイルを読み込んで、どのバックエンド実装を使用するかを制御するかを決定します。この設定ファイルは別途設定を必要とせず、パッケージのインストール後に自動的に処理されます。この設定ファイルについてさらに理解を深めることで、興味深い詳細を知ることができます。
XDG デスクトップポータルとは?
AI 関連の紹介は以下の通りです。
1XDG デスクトップポータルは、Linux 開発における Flatpak エコシステムの中核コンポーネントです。ファイルセレクター、スクリーンショットツール、印刷サービスなどのシステムリソースに安全かつ統一的にアクセスする方法をアプリケーションに提供します。
2
3セキュリティ:D-Bus プロトコルをベースとしたサンドボックス化されたインターフェースを提供することで、Flatpak アプリケーションがホストオペレーティングシステムと安全にやり取りできるようにします。各リクエストは権限チェックを受け、不正アクセスを防ぐためにユーザーの明示的な承認が必要です。統一インターフェース: 開発者は、Linuxディストリビューションの違いに関わらず、XDGデスクトップポータルで同じAPIを使用して様々な機能を実装できます。これにより、コードの移植性が向上し、開発が簡素化されます。
4統合: システムレベルのサービス(ファイルマネージャーやプリンター設定など)とシームレスに統合されるため、アプリケーションは基盤となる実装の詳細を気にすることなく、ネイティブアプリのように機能します。
5ブリッジング: アプリケーションとデスクトップ環境のブリッジとして機能するFlatpakアプリケーションは、デスクトップ環境と直接やり取りすることなく、ファイルを開くダイアログボックスやスクリーンショットのキャプチャなどのシステムサービスを呼び出すことができるため、連携が軽減されます。
6豊富な機能: ファイルの選択と保存、マルチメディアアクセス、印刷サービス、クリップボード共有、スクリーンショット、画面録画をサポートしています。
7拡張性とカスタマイズ性: 将来の拡張性を考慮して設計されているため、新しいポータルサービスを簡単に追加できます。また、異なるデスクトップ環境でも独自の実装を提供することで、一貫したデスクトップエクスペリエンスを維持できます。
8コミュニティサポート: XDGデスクトップポータルは、活発なコミュニティによって維持・更新されているオープンソースプロジェクトであり、パフォーマンスと安定性を継続的に向上させています。
9
10スクリーンショットや画面録画などの機能があります。
11
12XDGはX Desktop Groupの略です。Waylandはすでに広く使用されていますが、歴史的経緯から名称は変更されない可能性が高いです。私は中国ユーザーなので覚えにくいので、別途説明します。
13
14### スクリーンショット
15
16
17
18上記のパッケージをインストールすると、OBSにスクリーンキャプチャ(PipeWire)オプションが表示されます。インストールしていない場合は表示されず、録画やライブ配信はできません。
19
20FeishuのLinuxデスクトップ版とモバイル版の両方を使用しました。画面共有は成功しましたが、スクリーンショットを撮るのが面倒でした。Tencent Meetingは複数同時セッションにメンバーシップが必要なため、テストしていません。
著作権に関する声明:
- 出典のないコンテンツはすべてオリジナルです。、無断転載はご遠慮ください(転載後にレイアウトが崩れたり、内容が制御不能になったり、継続的に更新できない等の理由から)。
- このブログのコンテンツを非営利目的で解釈したい場合は、(読者の便宜のため)「オリジナル ソース」または「参照リンク」の形式でこのサイトの関連 Web ページ アドレスを提供してください。
このシリーズの投稿:
- greetd と regreet の使い方チュートリアル
- Arch LinuxでBluetoothデバイスにスムーズに接続する方法
- Linux環境のキー検出
- Wayland 環境の ksnip をコピーできない問題が解決されました
- Wofi 使い方チュートリアル
- Linux 用の Python の最新バージョンをインストールする
- ZFSスナップショットテスト