ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

niri-flake配置入门:programs.niri.settings类型化选项树,彻底告别KDL手写配置

2026/8/26 15:10:36 拓冰建站 浏览量
niri-flake配置入门:programs.niri.settings类型化选项树,彻底告别KDL手写配置 niri-flake配置入门programs.niri.settings类型化选项树彻底告别KDL手写配置【免费下载链接】niri-flakeNix-native configuration for niri项目地址: https://gitcode.com/gh_mirrors/ni/niri-flakeniri-flake是为滚动平铺式 Wayland 合成器niri提供的 Nix 原生配置方案它把 niri 的 KDL 配置文件封装成programs.niri.settings类型化选项树让你用 Nix 属性集完成全部配置并在构建期自动通过niri validate校验——拼错一个参数名系统构建会立刻报错而不是等你开机后才发现配置失效。本文面向新手带你三步装好 niri并用类型化选项管理键位、工作区和窗口规则。 它能为 niri 配置解决什么问题手写config.kdl的三大痛点niri-flake 全部覆盖手写 KDL 的痛点niri-flake 的解决方案参数拼错无提示开机才报错类型化选项树构建期类型检查配置与 niri 版本不同步构建期用niri validate按当前版本校验改配置只能重启验证nix rebuild即可验证失败则回滚核心能力一览NixOS / home-manager 模块一行enable true;装好 niri 及全部依赖polkit、GNOME keyring、xdg portal 等programs.niri.settings类型化选项树全部选项有类型、有默认值、有文档双版本包niri-stable最新稳定标签与niri-unstable开发分支最新提交并附带二进制缓存Stylix 集成边框颜色、光标主题随主题联动 三步安装从克隆到桌面第一步获取仓库并添加 flake 输入git clone https://gitcode.com/gh_mirrors/ni/niri-flake在你的 NixOS 配置中声明输入参考 flake.nix 查看其完整的 inputs 与 outputs 定义{ inputs.niri-flake.url github:sodiboo/niri-flake; }第二步启用 NixOS 模块并配置{ inputs, ... }: { imports [ inputs.niri-flake.nixosModules.niri ]; nixpkgs.overlays [ inputs.niri-flake.overlays.niri ]; programs.niri.enable true; }该模块会自动安装合成器、xdg-desktop-portal-gnome截屏共享所需、启用 polkit 与swaylock的 PAM 条目若你装了 home-manager配置模块会自动导入无需额外操作。第三步重建系统sudo nixos-rebuild switch构建成功即表示配置通过了niri validate校验。不想等本地编译的话模块默认启用了作者的 Cachix 二进制缓存可用niri-flake.cache.enable false;关闭。⚙️ programs.niri.settings 类型化选项上手官方文档明确建议programs.niri.settings是配置 niri 的首选方式。选项树源码位于 settings.nix每个选项都带类型和默认值。示例 1屏幕缩放最简入门{ programs.niri.settings { outputs.eDP-1.scale 2.0; }; }对应的 KDLoutput eDP-1 { scale 2.0; }由 flake 自动生成你无需再碰。示例 2键位绑定binds以「按键」为键名action是类型化的动作选项。单参数动作可直接写值{ programs.niri.settings.binds { ModD.action.spawn fuzzel; Mod1.action.focus-workspace 1; }; }多参数用列表、带命名属性用属性集{ programs.niri.settings.binds.XF86AudioRaiseVolume.action.spawn [ wpctl set-volume DEFAULT_AUDIO_SINK 0.1 ]; }每个键位还支持repeat按住连发、cooldown-ms冷却毫秒数、allow-when-locked锁屏下放行等子选项编辑器可全部自动补全。选项树还有哪些常用分支workspaces.name预定义工作区可指定open-on-output固定到某块屏幕window-rules/layer-rules按应用标题、app-id 匹配控制窗口位置、置顶、透明度、遮挡录屏等animations对每个事件设置 easing 或 spring 动画二选一的 variant 类型input.mouse/input.keyboard/input.touchpad指针加速、滚动手法、键盘布局等spawn-at-startup开机自启应用列表完整选项参考含每个选项的类型、默认值与说明见项目内自动生成的 docs.md它随 niri 版本更新自动重新生成始终与安装版本同步。️ 构建期校验是如何做到的流程在 flake.nix 中你的 Nix 配置先被求值成一棵 KDL 文档序列化逻辑在 kdl.nix随后由niri validate -c config用你实际安装的那个 niri 包做语法与语义校验校验不通过则整个系统构建失败。也就是说选项拼错 → Nix 求值阶段直接报「未知选项」选项类型错比如 scale 写了字符串→ 类型检查报错语义上 niri 不认的写法 →niri validate拦截三层防线全部发生在sudo nixos-rebuild期间桌面永远只收到合法配置。 进阶何时才需要 programs.niri.configprograms.niri.config允许直接提供原始配置可传 KDL 字符串也可传niri.lib.kdl的结构化节点。两个注意点一旦设置config它会完全覆盖programs.niri.settings生成的所有内容想接入 Stylix 主题homeModules.stylix会写边框颜色与光标主题时不要设置config否则主题选项无处生效调试时还可以读取programs.niri.finalConfig——它是最终落盘配置文件的字符串形式方便核对某个选项的生成结果。❓ 新手常见问题问nixpkgs 自带的 niri 包能用这个选项树吗类型化选项只保证与 flake 提供的niri-stable/niri-unstable同步若把programs.niri.package设为pkgs.niri建议改用programs.niri.config它本身版本无关且仍有构建期校验。问想用 niri 开发分支怎么办{pkgs, ...}: { nixpkgs.overlays [ inputs.niri-flake.overlays.niri ]; programs.niri.package pkgs.niri-unstable; }问装完还缺什么建议再用 home-manager 装上通知中心mako、状态栏waybar记得设mainBar.layer top和启动器fuzzel即成完整桌面。小结niri-flake 把 niri 配置从「手写 KDL 字符串」升级为「类型化 Nix 选项」programs.niri.settings提供补全与类型检查构建期niri validate兜底语义校验再配合niri-stable/niri-unstable双包与二进制缓存——这是目前用 Nix 管理 niri 配置最完整、最省心的方案。主要资料来源README.md、docs.md、settings.nix、flake.nix、kdl.nix【免费下载链接】niri-flakeNix-native configuration for niri项目地址: https://gitcode.com/gh_mirrors/ni/niri-flake创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考