試試動態視窗管理器 dwm 吧

2019-08-16 18:29:00

如果你崇尚效率和極簡主義,並且正在為你的 Linux 桌面尋找新的視窗管理器,那麼你應該嘗試一下動態視窗管理器dynamic window manager dwm。以不到 2000 標準行的程式碼寫就的 dwm,是一個速度極快而功能強大,且可高度客製化的視窗管理器。

你可以在平舖、單片和浮動布局之間動態選擇,使用標籤將視窗組織到多個工作區,並使用鍵盤快捷鍵快速導航。本文將幫助你開始使用 dwm。

安裝

要在 Fedora 上安裝 dwm,執行:

$ sudo dnf install dwm dwm-user

dwm 包會安裝視窗管理器本身,dwm-user 包顯著簡化了設定,本文稍後將對此進行說明。

此外,為了能夠在需要時鎖定螢幕,我們還將安裝 slock,這是一個簡單的 X 顯示鎖屏。

$ sudo dnf install slock

當然,你可以根據你的個人喜好使用其它的鎖屏。

快速入門

要啟動 dwm,在登入屏選擇 “dwm-user” 選項。

登入後,你將看到一個非常簡單的桌面。事實上,頂部唯一的一個面板列出了代表工作空間的 9 個標籤和一個代表窗戶布局的 []= 符號。

啟動應用

在檢視布局之前,首先啟動一些應用程式,以便你可以隨時使用布局。可以通過按 Alt+p 並鍵入應用程式的名稱,然後回車來啟動應用程式。還有一個快捷鍵 Alt+Shift+Enter 用於開啟終端。

現在有一些應用程式正在執行了,請檢視布局。

布局

預設情況下有三種布局:平舖布局,單片布局和浮動布局。

平舖布局由條形圖上的 []= 表示,它將視窗組織為兩個主要區域:左側為主區域,右側為堆疊區。你可以按 Alt+t 啟用平鋪布局。

平舖布局背後的想法是,主視窗放在主區域中,同時仍然可以看到堆疊區中的其他視窗。你可以根據需要在它們之間快速切換。

要在兩個區域之間交換視窗,請將滑鼠懸停在堆疊區中的一個視窗上,然後按 Alt+Enter 將其與主區域中的視窗交換。

單片布局由頂部欄上的 [N] 表示,可以使你的主視窗佔據整個螢幕。你可以按 Alt+m 切換到它。

最後,浮動布局可讓你自由移動和調整視窗大小。它的快捷方式是 Alt+f,頂欄上的符號是 ><>

工作區和標籤

每個視窗都分配了一個頂部欄中列出的標籤(1-9)。要檢視特定標籤,請使用滑鼠單擊其編號或按 Alt+1..9。你甚至可以使用滑鼠右鍵單擊其編號,一次檢視多個標籤。

通過使用滑鼠突出顯示後,並按 Alt+Shift+1..9,視窗可以在不同標籤之間移動。

設定

為了使 dwm 盡可能簡約,它不使用典型的組態檔。而是你需要修改代表設定的 C 語言標頭檔案,並重新編譯它。但是不要擔心,在 Fedora 中你只需要簡單地編輯主目錄中的一個檔案,而其他一切都會在後台發生,這要歸功於 Fedora 的維護者提供的 dwm-user 包。

首先,你需要使用類似於以下的命令將檔案複製到主目錄中:

$ mkdir ~/.dwm$ cp /usr/src/dwm-VERSION-RELEASE/config.def.h ~/.dwm/config.h

你可以通過執行 man dwm-start 來獲取確切的路徑。

其次,只需編輯 ~/.dwm/config.h 檔案。例如,讓我們設定一個新的快捷方式:通過按 Alt+Shift+L 來鎖定螢幕。

考慮到我們已經安裝了本文前面提到的 slock 包,我們需要在檔案中新增以下兩行以使其工作:

/* commands */ 註釋下,新增:

static const char *slockcmd[] = { "slock", NULL };

新增下列行到 static Key keys[] 中:

{ MODKEY|ShiftMask, XK_l, spawn, {.v = slockcmd } },

最終,它應該看起來如下:

... /* commands */ static char dmenumon[2] = "0"; /* component of dmenucmd, manipulated in spawn() */ static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", dmenufont, "-nb", normbgcolor, "-nf", normfgcolor, "-sb", selbgcolor, "-sf", selfgcolor, NULL }; static const char *termcmd[]  = { "st", NULL }; static const char *slockcmd[] = { "slock", NULL }; static Key keys[] = {     /* modifier                     key        function        argument */     { MODKEY|ShiftMask,             XK_l,      spawn,          {.v = slockcmd } },     { MODKEY,                       XK_p,      spawn,          {.v = dmenucmd } },     { MODKEY|ShiftMask,             XK_Return, spawn,          {.v = termcmd } }, ...

儲存檔案。

最後,按 Alt+Shift+q 登出,然後重新登入。dwm-user 包提供的指令碼將識別你已更改主目錄中的config.h 檔案,並會在登入時重新編譯 dwm。因為 dwm 非常小,它快到你甚至都不會注意到它重新編譯了。

你現在可以嘗試按 Alt+Shift+L 鎖定螢幕,然後輸入密碼並按確認鍵再次登入。

總結

如果你崇尚極簡主義並想要一個非常快速而功能強大的視窗管理器,dwm 可能正是你一直在尋找的。但是,它可能不適合初學者,你可能需要做許多其他設定才能按照你的喜好進行設定。

要了解有關 dwm 的更多資訊,請參閱該專案的主頁: https://dwm.suckless.org/