Niri - Arch Linux 中文维基

跳至內容

# Niri

出自 Arch Linux 中文维基
翻譯狀態：

- 本文（或部分內容）譯自 Niri，最近一次同步於 2025-11-14，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

Niri 是一個可滾動的平鋪式 Wayland 合成器。與 Sway 或 Hyprland 不同的地方在於，Niri 將窗口排列在一個無限延伸的水平桌面上，你可以向左或向右滾動（當然也可以實現更複雜的布局）。它類似於 GNOME 的 PaperWM 和 KDE 的 Karousel。

## 安裝

可以通過安裝 niri包 來獲取 Niri。

此外，為了獲得更好的使用體驗，你可能還需要安裝以下軟體：

- fuzzel：Niri 的默認應用啟動器
- mako：通知管理器
- waybar：Wayland 狀態欄
- xdg-desktop-portal-gtk、xdg-desktop-portal-gnome：用於實現屏幕共享功能
- alacritty：Niri 的默認終端
- swaybg：設置桌面背景圖片
- swayidle、swaylock：用於在空閒時鎖定屏幕
- xwayland-satellite：用於運行 X11 應用程式
- udiskie：用於管理和自動掛載 USB 驅動器

## 啟動

Niri 附帶了一個可以被顯示管理器執行的 桌面項。在顯示管理器中選擇它將會啟動 `niri-session`。`niri-session` 會把 環境變量導入至systemd.

你也可以從 getty 執行:

    niri-session

這可以結合Getty#自動登錄到虛擬控制台來實現一個無縫的啟動體驗。

## 配置

Niri 從 `~/.config/niri/config.kdl` 讀取配置文件。它是一個有多個部分的 KDL 文件。首次啟動創建的配置文件通過注釋給出了默認的選項設置。然而，隨著更新所引入的新選項並不會在用戶的配置中所體現，你可能需要查看 Niri 官方文檔。

Niri 在配置文件保存時會自動應用更改。無效的配置在自動應用更改時並不會使 Niri 崩潰，而是會保留上一次可工作的狀態，並提醒用戶配置文件無效。 可以執行 `niri validate` 來在 Niri 會話外檢查配置是否有效。

### 鍵盤布局

要配置鍵盤布局，編輯 `input/keyboard/xkb` 部分.

例如，假設你想要有一個 `CapsLock` 當作 `Ctrl` 的 "US Int Alt Gr" 布局：

    ~/.config/niri/config.kdl

    input {
        keyboard {
            xkb {
                layout "us"
                variant "altgr-intl"
                options "ctrl:nocaps"
            }
        }
        ...
    }

### 顯示輸出

首先執行 `niri msg outputs` 以獲取所有 Niri 識別到的輸出。然後你可以給每個顯示器應用配置。例如設置 HDMI 顯示器為 2560x1440 60Hz 並有 1.2 倍縮放，且關閉筆記本顯示器，可以這樣設置：

    ~/.config/niri/config.kdl

    output "HDMI-A-1" {
        mode "2560x1440@60.000"
        scale 1.2
    }

    output "eDP-1" {
        off
    }

#### 使用 kanshi 來動態設置布局

你也可以使用 kanshi 來動態設置布局，例如當你想要在連接至外部顯示器時關閉內置顯示器。

### 按鍵綁定

這一部分允許配置各種 Niri 可用的快捷鍵。很多已經在初次啟動時生成的默認配置中配置好了。它們都可以重新改為其他按鍵。

請注意 Niri 不 加載任何默認的綁定。若一個綁定沒有在配置文件中指定，那麼它就不會生效。「默認」只是在自動生成的配置文件中提供的。因此，在移除它們時請小心。建議使用注釋來注釋掉不需要的綁定。

按鍵綁定的設置要通過使用修飾鍵和`+`號以及在大括號內寫上要執行的動作。'spawn' 這個動作會啟動指定的程序。例如，你會有這樣的按鍵綁定：`Mod+T` 啟動 alacritty 以及 `Mod+D` 啟動 fuzzel包。默認配置下直接運行 Niri 時 `Mod` 一般是 `Super` 鍵，當它在其他環境下作為一個窗口運行時則是 `Alt` 鍵。

    ~/.config/niri/config.kdl

    binds {
        ...
        Mod+T { spawn "alacritty"; }
        Mod+D { spawn "fuzzel"; }
        ...
    }

注意使用 `spawn` 時所有用空格分開的參數都需要用引號包裹：

    ~/.config/niri/config.kdl

    binds {
        ...
        Mod+Ctrl+semicolon {
            spawn "swaylock" "-c" "121212" "-e" "-f" "-F"
        }
        ...
    }

#### WASD-式操作

可以配置 Niri 的工作區、窗口切換快捷鍵類似於遊戲中的 WASD 那樣：

    ~/.config/niri/config.kdl

    binds {
        ...
        Mod+A { focus-column-left; }
        Mod+S { focus-window-or-workspace-down; }
        Mod+W { focus-window-or-workspace-up; }
        Mod+D { focus-column-right; }
        ...
    }

注意這可能也需要更改其他的綁定。同時，一些人可能會喜歡在右手側配置，或是 Vim 式的操作。

### 自動啟動

Niri 可以讓某些程序隨 Niri 一起啟動。 例如上面提到的程序，比如 mako包, waybar包 和 swayidle包/swaylock包 可以這樣配置

    ~/.config/niri/config.kdl

    spawn-at-startup "mako"
    spawn-at-startup "waybar"
    spawn-at-startup "swayidle" "-w" "timeout" "601" "niri msg action power-off-monitors" "timeout" "600" "swaylock -f" "before-sleep" "swaylock -f"

注意這些進程被綁定到了 Niri 的會話，使得當 Niri 退出或掛起時，它們也會被殺死。為使它們能持續運行，你可能需要通過添加 `"&"` 參數來把它們設置成後台任務。

### XWayland

Niri 不提供 XWayland 支持來運行 X11 應用。它推薦使用 xwayland-satellite包 這個外部工具來作為替代。這個包被列到了可選依賴中，安裝它之後不需要做額外的配置。

## 另見

- Niri's own wiki

分類：​

- Wayland 合成器

Niri
新增話題