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>

可以參考我的「設定樣本」和「rc.xml」。

或是參考我的「文件導引」。

做了這樣的設定之後,可以有幾個「配套措施」。

  • Openbox設定「Margins」。
  • Panel設定「寬度」不佔滿,例如可以設定「85%」。

這樣在畫面上,就會有「縫隙」,可以在「桌面」按下「滑鼠左鍵」。

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>

可以參考我的「設定樣本」和「rc.xml」。

或是參考我的「文件導引」。

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」就會有「切換顯示桌面」的「按鈕」。