Openbox:下層的視窗不可訪問
我正在嘗試在 Openbox 中設置“終端作為桌面牆紙”,如此處所述
Openbox可以設置
<layer>below</layer>
,使視窗作為桌面背景執行,不會被狀態欄顯示,不受“最小化視窗”的影響。因此,我實際上沒有將無用的圖像顯示為牆紙,而是有一個終端。我作為後台執行的實際終端是
terminator
,我剛剛創建了一個符號連結terminator-wallpaper-1a
和terminator-wallpaper-1b
,它們只是終結器二進製文件的符號連結。只有名字不同,我才能分辨出來。我有雙顯示器設置,我想在每台顯示器上都有終結者桌面。
openbox 視窗屬性由以下設置
devilspie
:(if (matches (application_name) "terminator-wallpaper") (begin (wintype "desktop") ) )
然後,我在我的 openbox 配置中有這個,這樣每個桌面都會轉到相應的顯示器/桌面:
<application name="terminator-wallpaper-1a"> <focus>yes</focus> <layer>below</layer> <desktop>1</desktop> <position> <y>0</y> <x>0</x> <monitor>1</monitor> </position> <skip_taskbar>yes</skip_taskbar> <maximized>true</maximized> </application> <application name="terminator-wallpaper-1b"> <focus>yes</focus> <layer>below</layer> <desktop>1</desktop> <position> <y>0</y> <x>0</x> <monitor>2</monitor> </position> <skip_taskbar>yes</skip_taskbar> <maximized>true</maximized> </application>
最後,這就是我開始整個事情的方式:
devilspie & terminator-wallpaper-1a -b & terminator-wallpaper-1b -b & xdotool set_desktop 0 xdotool search --class 'Terminator-wallpaper-1a' windowunmap --sync windowmap windowsize %1 1920 1180 xdotool search --class 'Terminator-wallpaper-1b' windowunmap --sync windowmap windowsize %1 1920 1180
一切都很好,當我最小化所有其他視窗時,我實際上看到了我的終結者桌面。但實際上只有其中一個是可用的。即,專注或活躍。另一個我無法輸入。即使我用滑鼠點擊,游標仍然處於非活動狀態,因此視窗永遠不會成為焦點。
我怎樣才能解決這個問題 ?
解決方案:
在與使用者@intika 進行詳盡的故障排除後,我們發現了問題。將以下程式碼段添加到
<mouse>
openbox 配置文件中的部分修復了該問題:<context name="Desktop"> <mousebind button="Left" action="Press"> <action name="Focus"/> <action name="Raise"/> </mousebind> </context>
一次只能有一個視窗/應用程序獲得焦點。
在您的 openbox 配置中,兩個應用程序/桌面都有焦點,但從技術上講這是不可能的,因此 openbox 通過僅將焦點放在一個應用程序上來減輕您的配置(否則它不能這樣做)。
<application name="terminator-wallpaper-1a"> <focus>yes</focus> ... <application name="terminator-wallpaper-1b"> <focus>yes</focus>
有很多方法可以解決這個問題,它們圍繞著實現一種將焦點切換到第一個或第二個螢幕桌面/應用程序/桌面的方法而發展
可能的解決方案1:
您可以嘗試將焦點值設置為 no 或一起刪除焦點線,然後通過滑鼠點擊來測試切換焦點
可能的解決方案2:
使用滑鼠位置設置焦點,這裡是openbox wiki,首先刪除兩個桌面應用程序的焦點條目,然後將以下內容添加到主要部分下的 openbox 配置中,
<focus></focus>
如鍊接文件中所述<followMouse>yes</followMouse> <!-- move focus to a window when you move the mouse into it -->
請注意,這也會影響您的其他視窗……
您也可以嘗試
followMouse
在應用程序部分下使用,但我認為這不是由 openbox 處理的可能的解決方案2:
使用帶有鍵盤快捷鍵的 xdotool 或切換焦點,實際上您可以為鍵盤快捷鍵分配一個類似下面的命令,此解決方案還要求您通過刪除/編輯雙重來修復您的配置
<focus>yes</focus>
xdotool search --class 'Terminator-wallpaper-1b' windowactivate
與 xdotool 相同,wmctrl 也可以用於此問題:
#Lists currently open windows wmctrl -l #Set focus to windows with title containing STRING wmctrl -a STRING
筆記:
<focus>yes</focus> # if the window should try be given focus when it appears. if this is set # to yes it doesn't guarantee the window will be given focus. some # restrictions may apply, but Openbox will try to
筆記2:
還有許多其他可能的解決方案,您可以評論答案,我會相應地對其進行編輯;)