
niri 配置指南從零開始定制你的可滾動平鋪桌面【免費下載鏈接】niriA scrollable-tiling Wayland compositor.項目地址: https://gitcode.com/GitHub_Trending/ni/niriniri 是一款可滾動平鋪scrollable-tiling的 Wayland 合成器窗口排成一條可橫向滾動的帶縱向方向分成多個工作區(qū)。你所有的桌面行為——布局、快捷鍵、動畫、多顯示器——都由一個 KDL 格式的config.kdl文件驅(qū)動。這份指南按先跑起來 → 校驗配置 → 逐項自定義 → 排錯的順序展開每步只改一小塊配置改完立即可見效果。先把 niri 跑起來從源碼構(gòu)建最通用的路徑發(fā)行版?zhèn)}庫收錄情況參差不齊從源碼構(gòu)建可以拿到最新行為。構(gòu)建前確認已安裝系統(tǒng)依賴wayland、libudev、libinput、pipewire、gbm 等的開發(fā)包項目還附帶flake.nix方便用 Nix 環(huán)境構(gòu)建git clone https://gitcode.com/GitHub_Trending/ni/niri cd niri cargo build --release產(chǎn)物在target/release/niri。如果直接運行niri報錯找不到輸出多半是系統(tǒng)依賴缺失按報錯提示補齊即可。兩種運行方式在 TTY 登錄界面直接輸入niri回車就是最裸的啟動如果想在已有桌面里以嵌套窗口方式體驗直接運行不帶參數(shù)的niri。正式作為主會話運行時要加--session它會接管環(huán)境變量并向 D-Bus 注冊服務(wù)niri --session用 systemd 用戶服務(wù)接管登錄倉庫的 resources/niri.service 就是為登錄自啟準備的單元文件內(nèi)容核心是一行ExecStartniri --session并聲明了graphical-session.target依賴確保圖形會話和xdg-desktop-autostart按正確順序啟動sudo cp resources/niri.service ~/.config/systemd/user/niri.service systemctl --user enable niri.service啟用后下次登錄自動進入 niri。前提是niri可執(zhí)行文件在PATH中源碼構(gòu)建的話先把它拷到~/.local/bin/或/usr/local/bin/。找到你的 config.kdl并讓它可校驗配置文件默認讀取~/.config/niri/config.kdl也可以用-c 路徑參數(shù)或NIRI_CONFIG環(huán)境變量覆蓋。第一次使用時把倉庫里的 默認配置示例 復制到該位置作為起點——它幾乎每個選項都寫了注釋本身就是一份很好的參考。改完任何配置先做語法校驗再依賴熱重載niri validate它會解析整個文件并報告錯誤。兩個注釋符號要分清//注釋單行而/-寫在節(jié)點行首會把整個節(jié)點含其子塊注釋掉默認配置里的/--output示例就是這種用法。寫錯一個/都會導致節(jié)點不生效但文件看起來正常這是新手最常踩的坑。第一套自定義布局、快捷鍵、顯示器讓窗口布局符合你的習慣layout {}塊控制窗口如何擺放。下面把窗口間隙設(shè)為 16 邏輯像素、新窗口默認占半屏寬度并開啟陰影l(fā)ayout { gaps 16 default-column-width { proportion 0.5; } shadow { on } }保存后 niri 會自動熱重載窗口間立刻出現(xiàn)間隙、陰影默認是關(guān)閉的shadow下需顯式寫on。default-column-width留空花括號{}時則讓窗口自己決定初始寬度。按ModFmaximize-column放大當前列時會保留間隙而ModShiftF是真正的全屏窗口吃掉整塊屏幕binds { ModF { maximize-column; } ModShiftF { fullscreen-window; } }換一組順手的快捷鍵binds {}里每個綁定都是按鍵序列 動作。Mod在 TTY 下等于 Super 鍵。默認綁定已經(jīng)覆蓋移動窗口ModCtrl方向、切工作區(qū)Mod數(shù)字等下面只改啟動程序的部分binds { ModT { spawn alacritty; } ModD { spawn fuzzel; } ModQ { close-window; } ModH { focus-column-left; } ModJ { focus-window-down; } ModK { focus-window-up; } ModL { focus-column-right; } }spawn直接啟動程序需要管道或多個命令時改用spawn-sh參數(shù)會原樣交給sh -c。未設(shè)置時這些綁定不存在對應(yīng)操作只能靠觸摸板手勢完成。固定顯示器的分辨率、縮放與位置先用niri msg outputs查到你屏幕的名字筆記本內(nèi)置屏通常是eDP-1再按名字寫配置。這里把內(nèi)置屏固定到 1080p、縮放 1output eDP-1 { mode 1920x1080 scale 1 }mode支持寬x高刷新率寫法省略刷新率時取該分辨率的最高值整個mode不寫則自動選擇。position x1280 y0可以手動擺放第二塊屏不寫或擺放重疊時 niri 會自動放置。窗口規(guī)則與命名工作區(qū)按 app-id 給窗口定規(guī)則窗口規(guī)則用正則匹配應(yīng)用然后覆蓋它的打開行為。比如讓 Firefox 的畫中畫窗口默認浮動window-rule { match app-idr#firefox$ title^Picture-in-Picture$ open-floating true }這個正則同時兼容原生 Firefox 和 Flatpak 版本的 app-id。規(guī)則不寫時所有窗口統(tǒng)一走平鋪布局。更多可用規(guī)則block-out-from、open-on-workspace等可以在默認配置示例里找到注釋好的例子。命名工作區(qū)應(yīng)用永遠開到固定位置普通工作區(qū)是動態(tài)的空了就消失命名工作區(qū)則永遠存在即使沒有窗口。下面聲明一個固定在副屏的chat工作區(qū)并把 Fractal 啟動時直接開過去workspace chat { open-on-output DP-2 } window-rule { match app-idr#^org\.gnome\.Fractal$# open-on-workspace chat }命名工作區(qū)還接受layout {}覆蓋塊可以為單個工作區(qū)單獨設(shè)置gaps、struts、邊框等。動畫與視覺細節(jié)niri 的動畫分 easing 和 spring 兩類。調(diào)參前先整體變速slowdown大于 1 是放慢小于 1 是加速寫off則關(guān)掉全部動畫animations { slowdown 3.0 }單個動畫用 spring 時需要寫齊三個必填參數(shù)damping-ratio小于 1 結(jié)尾會回彈等于 1 直接停穩(wěn)、stiffness剛度、epsilon收斂閾值質(zhì)量固定在 1.0 不可改。各動畫節(jié)點的完整清單和推薦參數(shù)見 動畫配置文檔。視覺部分同樣在layout {}里focus-ring和border支持純色和 CSS 風格的漸變geometry-corner-radius 12加clip-to-geometry true可以給所有窗口切出圓角默認配置里就有注釋好的示例。輸入設(shè)備與手勢鍵盤布局與觸摸板參數(shù)input {}塊按設(shè)備類型分節(jié)。設(shè)置 XKB 鍵盤布局并調(diào)整觸摸板input { keyboard { xkb { layout us,ru options grp:win_space_toggle,compose:ralt,ctrl:nocaps } numlock } touchpad { tap natural-scroll accel-speed 0.2 } }xkb節(jié)留空時niri 從org.freedesktop.locale1讀取系統(tǒng)鍵盤設(shè)置所以配置了卻沒生效有時是系統(tǒng)層面覆蓋了你。觸摸板各項不寫時保持 libinput 默認值。手勢默認行為不用配置就有三個默認手勢觸摸板三指上/下滑切換工作區(qū)、三指左右滑切換窗口列、四指上滑打開概覽等價于ModO。gestures {}一節(jié)可以調(diào)整各手勢的閾值和觸發(fā)方式具體選項查 wiki 里的 Gestures 頁面即可。配置不生效按這個順序排查先跑niri validate排除語法錯誤校驗通過不代表節(jié)點寫對了位置比如output必須寫在頂層。確認改的是正在加載的文件默認~/.config/niri/config.kdl或你通過-c/NIRI_CONFIG指定的路徑。檢查注釋符號——/-開頭的節(jié)點整體被禁用//只注釋放行。niri 會在你保存文件后自動熱重載個別設(shè)置如prefer-no-csd需要重啟對應(yīng)應(yīng)用才生效。用niri msg outputs、niri msg workspaces、niri msg windows對照實際狀態(tài)確認合成器看到的世界和你預期的一致。?到這里你的 niri 已經(jīng)成形你現(xiàn)在擁有的是一套可校驗、可熱重載、可按窗口細分的配置。想再深入配置解析與數(shù)據(jù)結(jié)構(gòu)在 niri-config/ 模塊里逐字段看得一清二楚。遇到新需求時優(yōu)先翻默認配置里的注釋和 wiki 文檔它們覆蓋了絕大多數(shù)場景?!久赓M下載鏈接】niriA scrollable-tiling Wayland compositor.項目地址: https://gitcode.com/GitHub_Trending/ni/niri創(chuàng)作聲明:本文部分內(nèi)容由AI輔助生成(AIGC),僅供參考