視窗管理器 xmonad 教程

阮一峰發表於2017-07-29

開發者最需要的,就是一個順手的開發環境。

每個人的偏好不一樣,我的開發環境是 Fish Shell + Xfce + xmonad + Vim,已經用了好多年,非常滿意。

三個月前,我介紹了 Fish Shell,今天就來介紹 xmonad。根據本文,讀者可以從零開始配置並使用 xmonad。

xmonad 的所有操作都透過鍵盤,只適合命令列的重度使用者。如果你喜歡滑鼠和圖形介面,xmonad 不適合你。另外,它本身也不支援 Windows 系統。

一、xmonad 是什麼?

xmonad 是一種視窗管理器(window manager),用來管理軟體視窗的位置和大小,會自動在桌面上平鋪(tiling)視窗。

(圖片說明:各種軟體視窗)

注意,視窗管理器不是桌面環境(desktop environment)。後者是一套功能完善、整合各種工具的圖形使用者介面,比如 Gnome 和 KDE。桌面環境肯定包含了視窗管理器,但是(某些)視窗管理器可以不需要桌面環境,獨立執行,xmonad 就是這種。

(圖片說明:典型的桌面環境)

桌面環境通常很重,視窗管理器就很輕,不僅體積小,資源佔用也少,使用者可以配置各種細節,釋放出系統的最大效能。

Linux 系統允許使用者更換視窗管理器,有很多種可以選擇。xmonad 一直是最受歡迎的前三名,它使用 Haskell 語言編寫,是世界上使用人數最多的 Haskell 軟體。它的特點就是極簡化,效能高。

二、安裝

xmonad 的官網提供二進位制包,各個發行版都有。如果想自己編譯,也可以下載原始碼。

我的發行版是 Debian,安裝就是一行命令。


$ sudo apt-get install xmonad

此外,還需要再安裝兩個小工具。


$ sudo apt-get install xmobar dmenu

安裝完成後,退出當前對話(session),選擇 xmonad 會話重新登入。登入後,你會看到一個完全空白的桌面,什麼也沒有,這說明 xmonad 起作用了,因為這時還沒有任何軟體視窗。

三、常用命令

3.1 開啟終端

第一步,你需要開啟一個視窗。一般來說,總是開啟命令列終端視窗。

xmonad 提供一個功能鍵,稱為mod鍵(modifier 的縮寫),所有操作都要使用這個鍵,預設為alt鍵,但是一般會把它改掉,比如改成Windows鍵,具體修改方法請看後文。

開啟終端視窗,按下mod + shift + return(預設為alt + shift + return)。這會開啟一個終端視窗,佔據了所有桌面空間。

按下mod + shift + return,再開啟一個終端視窗。它與第一個視窗水平地平分螢幕,每個視窗占據50%空間。

注意,第二個視窗占據桌面的左邊,自動獲得焦點,成為當前視窗。這個左邊部分就稱為"主欄"(master pane),右邊部分稱為"副欄",前面開啟的第一個視窗自動進入副欄。

再按一次mod + shift + return,開啟第三個視窗。

這時,第三個視窗就會佔據主欄,前兩個視窗自動進入副欄。規則就是,新視窗總是獨佔主欄,舊視窗平分副欄。

3.2 佈局模式

預設的佈局模式是,主欄在左邊,副欄在右邊。

按下mod + space,佈局模式改成主欄在上方,副欄在下方。

再按一次mod + space,就變成獨佔模式,當前視窗獨佔整個桌面,其他視窗不可見。

再按一次mod + space,就變回預設模式(主欄在左邊,副欄在右邊)。

按下mod + ,(mod + 逗號),一個副欄視窗會移動到主欄,即主欄變成有兩個視窗,副欄變成只有一個視窗。

再按一次mod + ,(mod + 逗號),主欄變成三個視窗,副欄消失。

按下mod + .(mod + 句號),主欄減少一個視窗,副欄增加一個視窗。

3.3 移動焦點

新視窗總是自動獲得焦點,變成當前視窗。按下mod + j,焦點順時針移動到下一個視窗。

按下mod + k,焦點逆時針移動到上一個視窗。

如果當前視窗在副欄,按下mod + return,會與主欄視窗對調位置。

3.4 調整視窗順序

按下mod + shift + j,按照順時針的順序,當前視窗與下一個視窗交換位置,即當前視窗前進到下一個位置。

按下mod + shift + k,按照逆時針順序,當前視窗與上一個視窗交換位置。即當前視窗後退到上一個位置。

3.5 調整欄位大小

按下mod + l,主欄增加尺寸。

按下mod + h,副欄增加尺寸。

3.6 浮動視窗

正常情況下,xmonad 決定了視窗的位置和大小,但有時我們希望自己控制。xmonad 允許某個視窗浮動,脫離原有的佈局。

按下mod + 滑鼠左鍵拖動視窗,該視窗就會變成浮動視窗,可以放到螢幕的任何位置。

按下mod + 滑鼠右鍵可以調整視窗大小。

按下mod + t,當前浮動視窗就會結束浮動,重新回到 xmonad 的佈局。

3.7 關閉視窗

視窗可以自然關閉(比如終端視窗按ctrl + d),也可以讓 xmonad 強行關閉它。

按下mod + shift + c,會關閉當前視窗,焦點移到下一個視窗。

3.8 退出 xmonad

按下mod + shift + q,將會立刻關閉所有視窗,退出 xmonad,使用者需要重新登入。

四、工作區

xmonad 提供9個工作區,相當於提供9個桌面。按下mod + 1mod + 9切換。 xmonad 啟動後,預設處於1號工作區 。

如果要將一個視窗移到不同的工作區,先用mod + jmod + k,將其變成焦點視窗,然後使用mod + shift + 6,就將其移到了6號工作區。

我的習慣是,1號工作區是終端,2號是瀏覽器,4號是虛擬機器。

五、多顯示器

多顯示器需要使用配置工具,我用的是 xrandr。其他工具還有 Xinerama 和 winView,另外 arandr 是 xrandr 的圖形介面,也可以用。

下面的命令檢視顯示器的連線情況。


$ xrandr -q

具體的配置教程可以看這裡

使用多顯示器時,每個顯示器會分配到一個工作區。預設情況下,1號工作區顯示在主顯示器,2號工作區顯示在第二個顯示器。如果要將4號工作區顯示在當前顯示器,那麼按下mod + 4,4號工作就會與當前螢幕中的工作區互換位置。

mod + w 轉移焦點到左顯示器,mod + e轉移焦點到右顯示器。

mod + shift + w將當前視窗移到左顯示器,mod + shift + e將當前視窗移到右顯示器。

六、配置檔案

xmonad 的配置檔案是~/.xmonad/xmonad.hs。該檔案需要使用者自己新建,這裡是一個簡單的範例,詳細的解釋可以看官網

這個檔案裡面,modMask決定了mod到底是哪一個鍵。


modMask = mod4Mask

上面的這行就將mod鍵設為了Windows鍵。

修改配置檔案以後,按下mod + q,新的配置就會生效。

七、xmobar

xmonad 的預設桌面,什麼也沒有,不太方便。xmobar 提供了一個狀態列,將常用資訊顯示在上面,比如 CPU 和記憶體的佔用情況、天氣、時間等等。

(圖片說明:頂部狀態列就是 xmobar。)

它的配置檔案是~/.xmobarrc(教程123)。這裡是一個最簡單配置,這裡是我的膝上型電腦使用的配置。

八、dmenu

最後,dmenu 在桌面頂部提供了一個選單條,可以快速啟動應用程式。

(圖片說明:dmenu 顯示在螢幕頂部,輸入fire會自動顯示包含fire的啟動命令。)

它從系統變數$PATH指定的路徑中,尋找所有的應用程式,根據使用者的鍵入,動態提示最符合的結果。

按下mod + p就會進入dmenu選單欄,按下ESC鍵可以退出。方向鍵用來選擇應用程式,return鍵用來啟動。

(完)

相關文章