快轉到主要內容

Linux平鋪視窗管理員:i3wm快速上手

Linux系統 Linux使用技巧 I3wm Linux
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

原本Ivon想寫個簡單的i3wm使用教學,寫一寫好像就變成很複雜了。不過Ivon不會把文章弄得像r/unixporn那樣複雜的美化,Ivon的自定義以夠用就好為標準。

雖然這麼說,擺拍的時候還是要開啟透明感裝酷

Ivon將簡介Arch Linux上i3wm的安裝和操作方式,還有一些優化過程。最後談談將Display Manager幹掉,直接用startx啟動i3wm的用法。

1. i3wm簡介
#

i3wm是平鋪式視窗管理員(tiling window manager),而非完整的桌面環境(desktop environment),功能極度簡化。與類似的視窗管理員比較,i3wm擁有龐大的生態系和擴充能力。

i3wm最大好處就是RAM佔用了。對比GNOME和KDE來說非常低,i3wm的RAM佔用甚至比XFCE和LXQT還小。

但是,使用i3wm需要大量鍵盤快捷鍵,滑鼠的用處大大減弱。你還必須熟悉使用Linux終端機,以及懂得用指令連線上網、啟動藍芽、調整音量等操作,因為這些功能i3wm預設通通不提供,要裝也得花些時間調校,所以要有豐沛的好奇心和充足的時間來自定義i3wm的環境。如果你有geek的潛質,或許會在調整設定時像Ivon一樣越調越起勁。

注意i3wm是給X11伺服器用的,想要迎接未來的請改用"Sway",基本上就是Wayland版i3wm。

2. 安裝i3wm並初始化
#

i3wm可以跟現有的KDE、GNOME等桌面環境共存。i3wm是極簡化的視窗管理員,對其他桌面環境幾乎無影響。

  1. i3wm大部份Linux發行版都有收,有些還會包含i3-status等額外套件(i3-gap已被併入i3wm)。像Arch Linux安裝i3wm的指令就是:
# 此group包含i3-wm、i3blocks、i3lock 、i3status
sudo pacman -S i3
  1. 登出系統。在登入畫面點選i3wm即可進入i3wm的工作階段。

  2. i3wm初次登入會問要不要建立預設設定檔,用鍵盤移動,選Yes後Enter,我習慣將mod鍵設定為「Windows鍵」,之後設定檔會寫入至~/.config/i3/config

3. i3wm的操作方式
#

Ivon介紹的是i3wm的預設設定值,部份需要自行新增。此外Ivon的快捷鍵都是按照i3原作者推薦設定的,因為我記不住自己定義的有哪些。

要了解細部設定,請看官方手冊: i3 User’s Guide - i3 Tiling Window Manager

*Ivon使用「Windows鍵」作為mod鍵。*

  1. 進入桌面後什麼都不能按。按mod鍵+Enter啟動終端機模擬器,從這裡就能啟動程式了,例如輸入firefox。如果要「應用程式列表」,請看下下節安裝rofi。

  2. i3wm所有視窗都是平鋪在同一個畫面,每開一個新視窗,它就會水平排在視窗的旁邊。滑鼠點選中間黑條調整分割大小。

  3. 按mod鍵+V,下一個開啟的視窗就會改成垂直排列。按mod鍵+H回復水平排列。

  4. 對視窗按Shift+mod鍵+Q關閉視窗。

  5. 對視窗按mod鍵+F,視窗會變成全螢幕。再按一次復原。

  6. 對視窗按Shift+mod鍵+空白鍵,讓視窗變成自由移動的浮動模式。按mod鍵+滑鼠右鍵縮放視窗大小。

  7. i3wm沒有「最小化視窗」,不過你可以利用scratchpad(需另外設定快捷鍵):按Shift+mod鍵+減號將一或多個浮動視窗丟到scratchpad暫時隱藏,按mod鍵+減號復原。

  8. 你應會發現i3wm左下角有數字框框,代表的是工作區(workspace)。按mod鍵+數字鍵切換至該工作區。對視窗按Shift+mod鍵+數字鍵可將視窗移動到另一個工作區。

  9. 要使用i3lock鎖定螢幕,按Ctrl+mod鍵+L(需另外設定快捷鍵)。i3lock鎖定螢幕後是全黑畫面,可直接輸入密碼解鎖,而無須喚醒螢幕。

  10. 要退出i3wm的工作階段,按Shift+mod鍵+E,點選螢幕上方的Yes退出。

  11. i3wm的設定檔一經修改便需重新載入才會生效,若要不登出重新啟動i3wm,按Shift+mod鍵+R。

4. 優化i3wm環境
#

i3wm的設定檔位於~/.config/i3/config,裡面包含啟動i3wm後自動啟動(exec)的程式,還有快捷鍵(bindsym)設定。順序並無固定,不過Ivon建議是按照預設格式:檔案開頭填寫要自動啟動的程式,檔案末尾才填寫快捷鍵設定。

4.1. 解決Nvidia顯卡畫面撕裂
#

i3wm配合Nvidia專有驅動可能會遇到畫面撕裂(tearing),也就是捲動畫面時候出現橫向撕裂感,在這邊說明解法。

  1. 編輯/etc/default/grub,加入核心參數nomodeset
GRUB_CMDLINE_LINUX="nomodeset"
  1. 更新GRUB設定
sudo grub-mkconfig -o /boot/grub/grub.cfg
  1. 編輯~/.config/i3/config,加入Force full composition pipeline的設定。
exec_always --no-startup-id nvidia-settings --assign CurrentMetaMode="nvidia-auto-select +0+0 {ForceFullCompositionPipeline=On}"
  1. 重開機。順帶一提,i3wm要使用多螢幕輸出需配合xrender指令。

4.2. 設定隨i3wm自動啟動的程式
#

編輯~/.config/i3/config,設定啟動i3wm後自動啟動Fcitx5輸入法(新酷音)。

exec_always --no-startup-id fcitx5 -d

安裝feh(見下一節)後,要設定i3wm啟動後自動設定桌布。

exec_always --no-startup-id ~/.fehbg &

4.3. 設定i3wm快捷鍵
#

i3wm預設的快捷鍵已經很多,Ivon僅按照過去使用其他桌面環境的習慣新增幾個。

編輯~/.config/i3/config,在檔案末尾加入按PrintScreen的截圖快捷鍵:

bindsym Print exec --no-startup-id maim "/home/$USER/Pictures/$(date).png"

設定鎖定螢幕i3lock的快捷鍵:

bindsym Control+$mod+l exec "i3lock -c 000000"

最後是scratchpad的快捷鍵:

bindsym $mod+Shift+minus move scratchpad
bindsym $mod+minus scratchpad show

關於調整音量,i3wm預設綁定的是電腦鍵盤的音量鍵(XF86Audio,在PrintScreen鍵上面)配合pactl指令控制。如果你的鍵盤沒有音量鍵,就得另外綁定快捷鍵了。此外Ivon使用的音訊系統是PulseAudio,所以會選擇安裝pavucontrol這個圖形化工具再用rofi啟動,方便調整音量和輸出裝置。

4.4. 設定i3wm右下角顯示的系統資訊
#

i3wm預設會用i3-status在電腦右下角顯示IP、網速、RAM、硬碟等資訊。

  1. IP不該是隨時被人看到的東西對吧,編輯i3-status設定檔,位於~/.config/i3status.conf,將有線網路的格式修改如下:
ethernet _first_ {
        format_up = "Ethernet: Up"
        format_down = "Ethernet: down"
}
  1. 重新啟動i3wm。

4.5. 安裝應用程式啟動器rofi
#

rofi作用為顯示應用程式列表,是取代dmenu的好選擇。

  1. 安裝rofi:
sudo pacman -S rofi
  1. 編輯~/.config/i3/config,將i3wm設定檔的dmenu快捷鍵取代為rofi:
bindsym $mod+d exec --no-startup-id rofi -show drun
  1. 重新啟動i3wm,按mod鍵+D即可啟動應用程式列表。rofi會記住常用的應用程式並把他們排在前面。

4.6. 安裝合成器picom啟用透明特效
#

i3wm預設並沒有合成器(compositor),一般會推薦裝picom(compton已與其合併),提供透明與陰影效果。

  1. 安裝picom:
sudo pacman -S picom
  1. 複製picom的預設設定檔。該檔案用於設定picom的透明度、陰影、圓角。Ivon不太喜歡視窗都透明的,所以我會將預設值調回1。
cp /etc/xdg/picom.conf ~/.config/picom.conf
  1. 將picom加入~/.config/i3/config隨i3wm自動啟動。exec_always是指每次重新載入i3wm設定檔也會自動啟動。
exec_always --no-startup-id picom -b --config /home/$USER/.config/picom.conf
  1. 重新啟動i3wm,即可看到picom提供的視窗透明效果,切換工作區還會出現漸層動畫。

4.7 停用螢幕鎖定與保護程式
#

i3wm的設定檔案加入以下內容,防止X螢幕保護程式啟動:

exec_always --no-startup-id xset s off
exec_always --no-startup-id xset s off -dpms
exec_always --no-startup-id xset s noblank

5. 推薦跟i3wm一起用的軟體
#

Ivon推薦安裝一些像i3wm重度依賴鍵盤,無需滑鼠就可以操作的軟體。

5.1. st極簡終端機
#

st就…簡單的終端機模擬器,沒有其他桌面環境那樣花俏的分頁和視窗功能。

  1. st需從AUR安裝,檔案很小。貼上指令要按Shift+Insert。要更多自定義你得去改它的C原始碼。
yay -S st
  1. 修改i3wm的設定檔,找到i3-sensible-terminal這行,將mod鍵+Enter啟動的終端機改為st:
bindsym $mod+Return exec st

5.2. nm-applet純文字網路設定工具
#

  1. 網路連線現在都是利用NetworkManager,確保開機自動啟動:
sudo systemctl enable NetworkManager
  1. 安裝nm-applet。
sudo pacman -S network-manager-applet
  1. i3wm的設定檔裡面已經有nm-applet自動啟動的參數,所以重開機後就會看到系統右下角有控制網路連線的選單。另外nmcli指令也是很好用的連線工具。

5.3. ranger純文字檔案管理器
#

  1. 安裝ranger:
sudo pacman -S ranger
  1. 複製ranger設定檔至~/.config/ranger/rc.conf
ranger --copy-config=all
  1. ranger使用上跟vim十分相似,檢視檔案會自動啟動相應的應用程式。你也可以綁定快捷鍵。

5.4. feh圖片檢視器與設定桌布
#

  1. 安裝feh:
sudo pacman -S feh
  1. feh的用途就是拿來看圖片,支援各種格式。也可以用來設定桌布:
feh --bg-scale "圖片路徑"
  1. 將fehbg賦予執行權限:
chmod +x ~/.fehbg
  1. 將這條加到i3wm的設定檔,使每次登入後自動設定桌布:
exec_always ~/.fehbg &

5.5. mpv播放影片和音樂
#

跟常見的影片播放器VLC不同,MPV的自定義程度非常高。

  1. 安裝MPV:
sudo pacman -S mpv
  1. 建立預設設定檔:
cp -r /usr/share/doc/mpv/ ~/.config/
  1. 編輯~/.config/mpv/mpv.conf設定檔啟用MPV的硬體加速:
sub-auto=fuzzy
profile=gpu-hq
  1. 編輯~/.config/mpv/input.conf可以設定快捷鍵:
shift+s         screenshot each-frame
Shift+UP        seek  600
Shift+DOWN      seek -600
=               cycle video-unscaled
-               cycle-values window-scale 2 3 1 .5
WHEEL_UP        add volume 5
WHEEL_DOWN      add volume -5
WHEEL_LEFT      ignore
WHEEL_RIGHT     ignore
Alt+RIGHT       add video-rotate 90
Alt+LEFT        add video-rotate -90
Alt+-           add video-zoom -0.25
Alt+=           add video-zoom 0.25
Alt+j           add video-pan-x -0.05
Alt+l           add video-pan-x 0.05
Alt+i           add video-pan-y 0.05
Alt+k           add video-pan-y -0.05
Alt+BS          set video-zoom 0; set video-pan-x 0; set video-pan-y 0

順帶一提,mpv還能播放影片當i3wm的動態桌布。

5.6. vim文字編輯器
#

vim的教學網路上非常多了,這裡就不贅述了。vim能編輯程式,也可以分割視窗當小型IDE用。

如果想在終端機裡面啟動分割視窗,你可以另外安裝tmux,並設定登入Bash後自動啟動tmux工作階段。

5.7. w3m純文字網頁瀏覽器
#

w3m是支援CSS的純文字網頁瀏覽器,用來看Hacker News這類無圖片的純文字網頁很適合。此外,Reddit有Python的RDT套件可以純文字瀏覽,台灣的PTT則是用SSH連線至[email protected]就行了。

另外本站也可以用w3m存取喔。

安裝w3m:

sudo pacman -S w3m

造訪Google。操作方法見 官網

w3m google.com

6. 以startx啟動i3wm
#

Linux開機都會有顯示管理器(Display Manager)用於登入桌面環境,例如GDM、LightDM、SDDM等。但其實你可以把它去掉,變成開機只有黑底白字的tty,並在登入帳號後才啟動X伺服器和i3wm。

Ivon覺得這樣有點回到90年代的感覺,因為得從xinitrc開始設定起…但還是寫下來供參考。記得要先按照上面的步驟解決Nvidia顯示卡的問題,否則tty會沒畫面。

  1. 停用Display Manager的開機服務,例如GDM:
sudo systemctl disable gdm
  1. 拷貝預設xinitrc設定值至家目錄
cp /etc/X11/xinit/xinitrc ~/.xinitrc
  1. 編輯~/.xinitrc,去掉start some nice programs段落啟動的測試用程式。並在最下方加入啟動i3wm。
#!/bin/sh

# start some nice programs

if [ -d /etc/X11/xinit/xinitrc.d ] ; then
 for f in /etc/X11/xinit/xinitrc.d/?*.sh ; do
  [ -x "$f" ] && . "$f"
 done
 unset f
fi

exec i3
  1. 編輯Bash設定檔~/.bash_profile,設定登入帳號後自動啟動X伺服器(僅限本機而非SSH),並在退出i3wm後自動退出登入。
#
# ~/.bash_profile
#

[[ -f ~/.bashrc ]] && . ~/.bashrc

if [ -z "${DISPLAY}" ] && [[ $(tty) = /dev/tty1 ]]; then
exec startx
exit
fi

7. 用chezmoi備份dotfile
#

i3wm的設定檔眾多,你需要一款軟體加以管理。

參考 Chezmoi使用教學

延伸閱讀
#

相關文章

WayPipe:Wayland下的Linux遠端桌面,類似SSH X11 forwarding
Linux系統 Linux使用技巧 Linux
用Android手機播放Linux電腦音樂 ~ Pulse Audio串流設定
Linux系統 Linux使用技巧 Linux Android
Linux如何將SD卡/隨身碟格式化
Linux系統 Linux使用技巧 Linux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。