獨立窗口管理器下無法錄屏問題處理
我使用Labwc這個Wayland窗口管理器很久了,一開始在公司電腦Ubuntu環境下使用,後來自己組裝了一個迷你主機,換成在Arch下使用。
整體來說,差不多打造了個適合自己的桌面環境,比直接使用Gnome、KDE等龐然大物可控多了。比如按 Win + Enter
鍵隨時彈出終端,Win + H
隱藏,簡直不要太爽,效率直接飆升。
各個桌面核心組件都由自己用心挑選,配置文件 github dotfiles 管理,電腦壞了,隨時重裝也能重新回到熟悉環境。
迷你主機是AMD的核顯,打 Dota2,CS2 也沒有問題。
一切看起來都很美好,但是.....
有一天晚上,我要和公司合作方解決一個問題時,對方要看我的終端即時操作,需要使用飛書下的屏幕共享功能。開啓共享後麻煩出現了,對方反饋只能看到黑屏。
事發突然,我也沒想到會有這一出。從沒有測試過 Labwc + Arch
環境下的屏幕共享功能。簡直當頭一棒,賺錢恰飯可不能耽誤,最後改用手機後置攝像頭錄屏幕解決, 不是攝像頭對不準,就是光線太暗,過程可以說痛苦不堪。
再後來有個週末,我玩 Dota2 的時候,偶遇火槍買鞋後被系統自動賣掉了的 BUG,當時下載比賽錄像錄屏分享,打開 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/KED時,xdg-desktop-portal-gnome、xdg-desktop-portal-kde早就自動幫你預裝好了。
因爲Labwc是獨立的窗口管理器,默認並不會包含xdg-desktop-portal-wlr,所以會黑屏或者無法直播。Wayland 環境下的屏幕共享一般通過Pipewire,調用 xdg-desktop-portal,再由其調用當前DE環境的 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 Jun 10 12:13 ./
4drwxr-xr-x 1 root root 5018 Jun 12 12:36 ../
5-rw-r--r-- 1 root root 24 Mar 24 10:58 gtk-portals.conf
6-rw-r--r-- 1 root root 32 May 9 04:32 hyprland-portals.conf
7-rw-r--r-- 1 root root 67 May 22 16:03 labwc-portals.conf
8drwxr-xr-x 1 root root 68 Jun 7 11:22 portals/
9-rw-r--r-- 1 root root 423 Jun 9 07:51 sway-portals.conf
10-rw-r--r-- 1 root root 24 Aug 9 2024 wlr-portals.conf
11➜ ~ ls -al /usr/share/xdg-desktop-portal/labwc-portals.conf
12-rw-r--r-- 1 root root 67 May 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 root root 190 Jun 10 12:13 ./
16drwxr-xr-x 1 root root 5018 Jun 12 12:36 ../
17-rw-r--r-- 1 root root 24 Mar 24 10:58 gtk-portals.conf
18-rw-r--r-- 1 root root 32 May 9 04:32 hyprland-portals.conf
19-rw-r--r-- 1 root root 67 May 22 16:03 labwc-portals.conf
20drwxr-xr-x 1 root root 68 Jun 7 11:22 portals/
21-rw-r--r-- 1 root root 423 Jun 9 07:51 sway-portals.conf
22-rw-r--r-- 1 root root 24 Aug 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's implementation uses org.gnome.SessionManager and
33# org.freedesktop.ScreenSaver, neither of which is implemented by Sway. This
34# will cause some programs (e.g. Firefox) to use Wayland's idle-inhibit
35# protocol instead, which sway does implement.
36org.freedesktop.impl.portal.Inhibit=none
可以讀讀arch的文檔,XDG_CURRENT_DESKTOP 環境變量決定讀取那個配置文件,配置文件控制使用哪個後端實現。文件不需要獨立配置,安裝包裝好後,會自動處理。多理解一些,會學到一些邊角知識。
XDG Desktop Portal 是什麼
AI相關介紹如下:
1XDG Desktop Portal 是 Linux 開發領域中,Flatpak 生態系統的一個核心組件。它爲應用程序提供了安全、統一的方式來訪問系統資源,如文件選擇器、截圖工具、打印服務等。
2
3安全性:基於 D-Bus 協議,提供沙盒環境中的接口,使 Flatpak 應用能安全地與主機操作系統交互。每個請求都會經過權限檢查,需用戶明確批准,可防止未授權訪問。
4統一接口:開發者通過 XDG Desktop Portal,可用相同的 API 實現各種功能,無需考慮具體 Linux 發行版差異,提高了代碼可移植性,簡化了開發工作。
5集成性:能與系統級服務(如文件管理器、打印機設置)無縫集成,讓應用像原生應用一樣工作,無需關注底層實現細節。
6橋接作用:作爲應用程序和桌面環境之間的橋樑,允許 Flatpak 應用調用系統服務,如打開文件對話框或捕獲屏幕截圖,而無需直接與桌面環境交互,降低了耦合度。
7功能豐富:支持文件選擇和保存、多媒體訪問、打印服務、剪貼板共享、截圖和錄屏等功能。
8可擴展性和可定製化:設計時考慮了未來擴展,可方便地添加新的門戶服務。不同的桌面環境還可提供自己的實現,保持桌面體驗的一致性。
9社區支持:XDG Desktop Portal 是開源項目,由活躍的社區維護和更新,可不斷改進性能和穩定性
截圖和錄屏是其提供功能之一。
XDG
是 X Desktop Group
的縮寫,儘管 Wayland 已經大行其道了,估計相關名字因爲歷史緣故也不可能更改,單獨解釋是因爲我是中文用戶,不好記住,怪怪的。
結果截圖
裝好上述的包後,OBS上就會出現一個 屏幕採集(PipeWire)
的選項,否則不會出現,也就無法錄屏直播。
飛書上我同時使用Linux桌面端和手機端,測試屏幕共享沒有問題,懶得截圖了;騰訊會議因爲多端同時參會要開會員,沒有測試。
版權申明:
- 未標註來源的內容皆為原創,未經授權請勿轉載(因轉載後排版往往錯亂、內容不可控、無法持續更新等);
- 非營利為目的,演繹本博客任何內容,請以'原文出處'或者'參考鏈接'等方式給出本站相關網頁地址(方便讀者)。
相關文章:
- labwc環境啓用wlogout
- Wayland環境自動切換壁紙
- Wayland 環境下gif錄屏
- 應用啓動器yofi使用配置
- Labwc更換定製皮膚
- 快速隱藏和呼出終端
- greetd和regreet使用教程
- Labwc 便捷配置
- 窗口管理器labwc使用記
- Arch linux如何順暢連接藍牙設備