---
# System prepended metadata

title: i3 WM

---

---
type: slide
slideOptions:
  transition: slide
---

The tiling window manager
---

# i3 WM

---

# Outline

+ Linux 下的桌面環境
    + Desktop Environment
    + Display Manager
    + Window Manager
+ Tiling Window Manager
    + i3 WM
    + i3 WM Usage

---

# Desktop Environment(DE)

+ 各種元件集合而成的環境
    + Topbar
    + Evince 、 Dophin 、 Game 等常用軟體
    + 視窗、圖示、滑鼠游標等外觀
    + 鎖定螢幕畫面
    + Display Manager
    + Window Manager

----

# 如果沒有桌面環境...

![](https://i.imgur.com/nzU876I.png)

----

# KDE Plasma 5

![](https://i.imgur.com/E39FtEv.jpg)

----

# KDE Plasma 5

+ 易客製化
+ 介面類似 Windows
+ 輕量（？
+ Steam Deck(SteamOS 3.0) 、 OpenSUSE 預設桌面環境

----

# Gnome

![](https://i.imgur.com/pWtFosz.png)

----

# Gnome

+ 可能需要 gnome-tweaks 等工具來客製化
+ 介面類似 macOS
+ Ubuntu 預設桌面環境

----

# Xfce

![](https://i.imgur.com/vFh1n75.jpg)

----

# Xfce

+ 輕量級桌面環境
+ 簡潔、穩定

---

# 載入桌面環境的幫手
## Display Manager

----

## 是否對以下命令有印象？

```shell
$ sudo systemctl enable gdm     # for gnome
$ sudo systemctl enable sddm    # for plasma 
```

----

## Display Manager

+ 引導登入的桌面環境以及使用者
+ 自動登入、指紋辨識、 ID 卡辨識……
+ 自定義登入介面的外觀(Themes)

----

## GDM(Gnome Display Manager)

![](https://i.imgur.com/3RVDLCH.png)

----

## SDDM(Simple Desktop Display Manager)

![](https://i.imgur.com/HhvsDUr.png)

----

## LigthDM with Slick Greeter 

![](https://i.imgur.com/XH4xOz3.png)

----

## 更換要登入的桌面環境

![](https://i.imgur.com/s758JIn.gif)

---

## Tiling Window Manager

![](https://i.imgur.com/VgMnMQZ.png)

----

## Tiling Window Manager

+ 視窗之間不重疊
+ 不包含其他附屬程式（需要要什麼自己裝）
+ 最大化螢幕使用

----

![](https://i.imgur.com/9nu2QhX.jpg)

----

# i3-gaps

![](https://i.imgur.com/As2HlGz.jpg)

----

# 以 Manjaro i3 為例

![](https://i.imgur.com/UvvvBbt.png)

----

# 左下角會有提示

![](https://i.imgur.com/P1WVAVs.png)

----

## 基本操作 —— Open Terminal

![](https://i.imgur.com/YJnCCYd.gif)

----

## 開啟、關閉程式

![](https://i.imgur.com/uSK2SRT.gif)

----

## 切換 Layout 

![](https://i.imgur.com/td57AT1.gif)

----

## Layout(cont.)

![](https://i.imgur.com/1wDv9fT.gif)

----

## Resize

![](https://i.imgur.com/BGDcxdP.gif)

----

## 全螢幕和彈出視窗控制

![](https://i.imgur.com/VsnxeMG.gif)

---

# Config & Tips

----

# Config file

```shell
~/.config/i3/config
~/.i3/config
/etc/i3/config
```

----

# 組合鍵綁定

```bash
# Set mod key (Mod1=<Alt>, Mod4=<Super>)
set $mod Mod1
bindsym $mod+Return exec kitty
bindsym $mod+Shift+q kill
```

----

### 進入桌面時自動啟動程式

```bash
# 僅一次
exec --no-startup-id ibus-daemon -drxR

# restart(mod+Shift+r) 也會生效
exec_always --no-startup-id picom -b
exec_always --no-startup-id ~/script.sh
```

----

## Focus window 是否跟隨游標

```bash
focus_follows_mouse no
```

----

## i3 + KDE Plasma

+ [Using Other Window Managers with Plasma](https://userbase.kde.org/Tutorials/Using_Other_Window_Managers_with_Plasma)
+ [i3 and kde plasma](https://github.com/heckelson/i3-and-kde-plasma)

----

# 常用的輔助程式

+ [Polybar](https://github.com/polybar/polybar) -- 替換原本的 i3bar 提供高度客製化的外觀和功能
+ [Rofi](https://github.com/davatorium/rofi) -- dmenu 的替代方案
+ [picom](https://github.com/yshui/picom) -- 提供視窗諸如透明、陰影等特效
+ [Polkit 工具](https://wiki.archlinux.org/title/Polkit) -- 進行驗證時會需要（例如燒錄 LiveUSB 等操作）
+ [feh](https://github.com/derf/feh) -- 桌布工具
+ [dunst](https://github.com/dunst-project/dunst) -- Notification daemon
+ [nm-applet](https://gitlab.gnome.org/GNOME/network-manager-applet) -- NetworkManager 的 systray icon
+ [arandr](https://christian.amsuess.com/tools/arandr/) -- 管理螢幕顯示的 GUI 小工具

----

## Wayland 方案

+ [Sway](https://swaywm.org/) -- 在 Wayland 下的 i3 替代方案，可以直接用原本的 i3config ，桌布、透明特效等皆可直接用 sway config 設定
+ [Wofi](https://hg.sr.ht/~scoopta/wofi) -- Wayland native 的程式啟動器
+ [Waybar](https://github.com/Alexays/Waybar) -- Wayland native 的 topbar
+ [mako](https://github.com/emersion/mako) -- Notification daemon for wayland
+ [wdisplays](https://github.com/luispabon/wdisplays) -- 管理螢幕顯示

----

![](https://i.imgur.com/VH0ZtDh.png)
