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