bspwm 上的螢幕共享使滑鼠在共享監視器上無響應
問題
當我使用 Discord 或 Firefox 共享整個螢幕時,共享螢幕對我的滑鼠完全沒有響應。停止螢幕共享並不能解決問題。視窗共享工作正常。
- **我的滑鼠無法點擊共享螢幕上的任何內容,也無法滾動。**沒有懸停效果(例如:在 Spotify 中,懸停在按鈕上應該使它們變大和變綠,連結應該加下劃線,這不會發生在凍結的螢幕上)
- 鍵盤仍然可以使用。影片仍然有效,一切仍然正常。
- 使用鍵盤快捷鍵,我仍然可以在凍結的螢幕上更改桌面。
- 將視窗從“凍結”螢幕移動到不同的螢幕(使用鍵盤快捷鍵)會使該視窗再次可點擊。將其移回會撤消它,這表明它肯定是螢幕而不是停止響應點擊的視窗。
- 點擊離開
dunst
通知有效。我的rofi
開始菜單可以正常打開並且是互動式的。- 螢幕錄製可與 SimpleScreenRecorder 和 OBS 配合使用。
- 使用 spectacle 在凍結螢幕上截取螢幕截圖:我可以在凍結螢幕上點擊並拖動一個矩形以截取螢幕截圖(當然,如果我在另一台顯示器上打開 spectacle,否則我將無法點擊
Take a new screenshot
按鈕)- 這種情況已經持續了好幾個月,也許一年。
- 我的 bspwm 設置是這樣設置的,如果我將滑鼠懸停在一個視窗上,該視窗就會成為焦點。在凍結的螢幕上,只有最後一個焦點視窗成為焦點。我無法使用滑鼠在兩個視窗之間聚焦,但 bspwm 確實注意到我的滑鼠在那個螢幕上。
Chromium 中的螢幕共享
在 Chromium 中,您可以看到螢幕選項卡和應用程序選項卡:
如果我從應用程序選項卡共享螢幕(例如 eDP-1-1 = 我的筆記型電腦螢幕),則會觸發問題。如果我從“您的整個螢幕”選項卡共享螢幕,則不會。
Firefox 和 Discord 中的螢幕共享
在選擇要共享的螢幕時,它們實際上並沒有向您顯示螢幕,而是向您顯示應用程序:
您看到的 xxx-1-1 名稱是影片輸出的名稱。共享其中之一會引發問題。看的人甚麼都看不到。在不和諧的情況下它會崩潰。如果我點擊“整個螢幕”,它會共享我所有的顯示器,就好像它們是一個螢幕一樣。
在不和諧中,它的工作方式相同,但螢幕共享立即崩潰。共享螢幕上仍會觸發無響應的滑鼠問題。
日誌
當我開始共享時,在終端中執行 Firefox 和螢幕共享會輸出以下輸出:
[GFX1-]: Failed GL context creation for WebRender: 0 [GFX1-]: FEATURE_FAILTURE_WEBRENDER_INITIALIZE_UNSPECIFIED [GFX1-]: Failed to connect WebRenderBridgeChild. [GFX1-]: Compositors might be mixed (5,1)
xprop
在凍結螢幕上的視窗上使用會產生以下輸出:WM_STATE(WM_STATE): window state: Normal icon window: 0x0 WM_NAME(STRING) = "eDP-1-1" WM_CLASS(STRING) = "root", "Bspwm"
如果我在未凍結的空桌面上使用 xprop,我會收到相同的消息(這是預期的)。
xprop
似乎認為凍結螢幕上的選定視窗是根 bspwm 類。當我開始共享時,使用 Discord 的螢幕共享崩潰並在終端中輸出以下行:
[WebContents] crashed... reloading
- 裡面什麼都沒有
dmesg
。- 裡面什麼都沒有
journalctl
。- 裡面什麼都沒有
/var/log/Xorg.0.log
。我已經嘗試過的
- 關閉所有螢幕上的所有視窗可以修復凍結的螢幕(註銷/重新啟動也是如此)。
- 殺死並重新啟動 polybar 會使 polybar 在凍結的螢幕上再次可點擊。凍結螢幕上的所有其他視窗仍將無響應。
- 我嘗試禁用康普頓的螢幕共享
- 我嘗試在沒有 Nvidia 的DRM KMS的情況下進行螢幕共享
- 我嘗試在安全模式下執行 Firefox
- 我嘗試在 Firefox 和 Discord 中禁用硬體加速
- 我嘗試只連接一台顯示器而不是 3
- 我嘗試使用 i3 而不是 bspwm。i3 僅顯示視窗和“整個螢幕”,如果連接了多個螢幕,則會顯示所有螢幕。我不能選擇一個螢幕。
- 我嘗試使用 awesomewm,結果與 i3 相同。
我的系統
zjeffer@Arch-zjeffer -------------------- OS: Arch Linux x86_64 Host: 80WK Lenovo Y520-15IKBN Kernel: 5.11.1-arch1-1 Uptime: 12 hours, 2 mins Packages: 1606 (pacman) Shell: zsh 5.8 Resolution: 1920x1080, 1920x1080, 1920x1080 WM: bspwm Theme: Nordic-Polar [GTK2/3] Icons: Papirus-Light-nordic-blue-folders [GTK2/3] Terminal: gnome-terminal CPU: Intel i7-7700HQ (8) @ 2.800GHz GPU: NVIDIA GeForce GTX 1050 Mobile GPU: Intel HD Graphics 630 Memory: 2662MiB / 7845MiB
一些問題
我有一些問題可以幫助我解決此問題:
- Firefox 和 Discord 使用哪些軟體/技術來共享螢幕?Chromium 和 Microsoft Teams 使用不同的軟體嗎?
- 使用什麼軟體/技術
bspwm
來共享螢幕?i3 甚至不提供共享特定螢幕的選項,因此它們必須使用不同的技術。- 我還能提供什麼(日誌、系統資訊……)?
從這篇Reddit 文章中,我們發現當 bspwm 的
focus_follows_pointer
選項設置為true
.這些螢幕甚至不應該首先出現。根據/u/ortango_ 的評論,分享它們甚至不應該起作用:
Firefox 不支持每台顯示器共享。你認為是監視器的那些東西不是;他們只有顯示器的名字。
它們被映射
focus_follows_pointer
以便可以在視窗之間跟踪滑鼠 - 這具有 webrtc 認為它們是普通視窗(但它們不是普通視窗或監視器)的副作用,所以問題出在 bspwm 上,我在這裡提出了一個問題。它在 Chromium 中工作的原因是因為它使用了較新的 libwebrtc 實現。微軟團隊可能也做了同樣的事情。
以下是我在 Mozilla 的 bugtracker 中找到的相關功能請求: