Openbox Toggle Show Desktop
設定顯示桌面
Openbox設定「顯示桌面」,有下面幾種方式
- 滑鼠按鍵綁定
- 鍵盤按鍵綁定
- xdotool
- wmctrl
Openbox內建有提供一個動作「ToggleShowDesktop」可以設定,所以可以用來設定在「滑鼠按鍵綁定」和「鍵盤按鍵綁定」。
滑鼠按鍵綁定
我綁定,在「桌面」按下「滑鼠左鍵」,就會執行「ToggleShowDesktop」這個動作。
設定範例如下
<mouse>
<context name="Root">
<!-- Mouse Button Left Click //-->
<mousebind button="Left" action="Press">
<action name="ToggleShowDesktop"/>
</mousebind>
</context>
</mouse>
或是參考我的「文件導引」。
做了這樣的設定之後,可以有幾個「配套措施」。
這樣在畫面上,就會有「縫隙」,可以在「桌面」按下「滑鼠左鍵」。
Openbox設定「Margins」,可以參考我的「設定樣本」。
而Panel,有很多選項可以選擇搭配的,像是「lxqt-panel」,「tint2」等等,
或是也可以搭配「cairo-dock」。
我是搭配「tint2」,除了剛剛講到的「寬度」設定「85%」, 「tint2」還有一個特別的設計,
在「圖形界面程式(tint2conf)」有一個選項在「Panel」那個「頁籤」,
有一個「Window manager interaction / Forward mouse events」選項,
這個選項,需要勾選。
只要有勾選,就可以在「tint2rc」找到如下的設定
wm_menu = 1
這樣在「tint2 Panel」一些區域,若是沒有綁定「滑鼠左鍵」,
則會執行「Openbox桌面滑鼠左鍵的功能」,
例如:
在「tint2 Desktop」那個「區域」,
在「tint2 Taskbar」的「非Task區域」,
在「tint2 DateTime」那個「區域」,
在這幾個區域,按下「滑鼠左鍵」,就會執行「Openbox桌面滑鼠左鍵的功能」。
相關的說明可以執行「$ man tint2」,然後以「wm_menu」當關鍵字找尋,
例如,執行下面指令
$ man tint2 | grep 'wm_menu' -A 2
可以找到如下的說明
· wm_menu = boolean (0 or 1) : Defines if tint2 forwards unhandled mouse events to your window manager. Useful
for window managers such as openbox, which display the start menu if you right click on the desktop.
--
* none : If wm_menu = 1 is set, the mouse event is forwarded to the window manager. Otherwise it is ignored.
* close : close the task * toggle : toggle the task * iconify : iconify (minimize) the task * toggle_iconify :
toggle or iconify the task * maximize_restore : maximized or minimized the task * shade : shades (collapses)
鍵盤按鍵綁定
除了上面「滑鼠按鍵綁定」的設定,也可以設定「鍵盤按鍵綁定」,
例如,設定「Win + d」,就會執行「ToggleShowDesktop」這個動作。
設定範例如下
<keyboard>
<keybind key="W-d">
<action name="ToggleShowDesktop"/>
</keybind>
</keyboard>
或是參考我的「文件導引」。
xdotool
上面設定「Win + d」的「鍵盤按鍵綁定」之後,
可以搭配「xdotool」這個指令,來自於「Package: xdotool」。
例如,執行下面指令,
xdotool key super+d
就會如同您按下「Win + d」這個動作,
所以也就會執行「ToggleShowDesktop」這個動作。
接著搭配撰寫「Desktop Entry」放到「~/.local/share/applications/」這個資料夾。
例如,撰寫「~/.local/share/applications/openbox-toggle-show-desktop.desktop」,
只要將剛剛的指令,寫在「Exec=」之後,
例如
Exec=xdotool key super+d
再接著搭配「tint2」裡「launcher」的功能,在「tint2rc」撰寫如下的設定
例如
launcher_item_app = openbox-toggle-show-desktop.desktop
這樣在「tint2」就會有「切換顯示桌面」的「按鈕」。
這個技巧,是在「Arch Wiki / Openbox」學到的。
wmctrl
可以搭配「wmctrl」這個指令,來自於「Package: wmctrl」。
撰寫一個「Shell Script」放到「~/bin」這個資料夾。
例如:撰寫「~/bin/wmctrl-toggle-desktop.sh」,內容如下
#!/usr/bin/env bash
if xprop -root _NET_SHOWING_DESKTOP | grep '= 1'; then
wmctrl -k off
else
wmctrl -k on
fi
上面這段程式碼,是在「這篇文章下面的回覆」看到的。
記得設定可執行
$ chmod u+x ~/bin/wmctrl-toggle-desktop.sh
或是執行
$ chmod 755 ~/bin/wmctrl-toggle-desktop.sh
然後一樣可以善用上面提到的技巧,撰寫「Desktop Entry」,
搭配「tint2」裡「launcher」的功能,
這樣在「tint2」就會有「切換顯示桌面」的「按鈕」。