跳至內容

Niri

出自 Arch Linux 中文维基

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

安裝

[編輯 | 編輯原始碼]

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

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

啟動

[編輯 | 編輯原始碼]

Niri 附帶了一個可以被顯示管理器執行的 桌面項。在顯示管理器中選擇它將會啟動 niri-sessionniri-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, waybarswayidle/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 這個外部工具來作為替代。這個包被列到了可選依賴中,安裝它之後不需要做額外的配置。

另見

[編輯 | 編輯原始碼]