niri 配置实践:从窗口布局到双屏输出的 30 分钟定制教程 niri 配置实践从窗口布局到双屏输出的 30 分钟定制教程【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri如果你受够了拖动窗口、对齐边角又觉得传统平铺窗口管理器太极客那么 niri 值得试试它是一款可滚动平铺的 Wayland 合成器窗口沿一条无限宽的横向画布排列像翻页一样用滚轮或触摸板切窗。本文带你完成一套可落地的 niri 配置——从最小可用配置到列宽、命名工作区、快捷键、双屏输出全部给出可直接粘贴的 KDL 配置片段。五分钟内跑起来先确认环境需要 C/C 编译器和一套 Wayland 相关库。三条命令分别对应 Debian 系、Fedora 系和 Arch选你发行版那条即可# Debian / Ubuntu sudo apt-get install -y gcc clang libudev-dev libgbm-dev libxkbcommon-dev libegl1-mesa-dev libwayland-dev libinput-dev libdbus-1-dev libsystemd-dev libseat-dev libpipewire-0.3-dev libpango1.0-dev libdisplay-info-dev # Fedora sudo dnf install gcc libudev-devel libgbm-devel libxkbcommon-devel libwayland-devel libinput-devel dbus-devel systemd-devel libseat-devel pipewire-devel pango-devel cairo-gobject-devel clang libdisplay-info-devel # Arch Linux sudo pacman -S --needed base-devel clang libudev libgbm libxkbcommon wayland libinput dbus systemd seatd pipewire pango libdisplay-info接着从源码构建需要 rustup.rs 提供的最新 Rust 工具链git clone https://gitcode.com/GitHub_Trending/ni/niri cd niri cargo build --release构建产物在target/release/niri。登录图形界面后在 TTY 里运行niri-session或直接在显示管理器里选 Niri 会话。首次启动时 niri 会读取~/.config/niri/config.kdl文件不存在的话它会自动用内置的默认配置生成一份建议就以这份默认配置为起点修改——配置是热加载的保存即生效改错了顶多弹个错误通知不会把你的会话弄崩。这段最小配置实现能开终端、能关窗、能左右切列// 最小启动配置五个最常用的动作 binds { ModReturn { spawn alacritty; } ModQ { close-window; } ModH { focus-column-left; } ModL { focus-column-right; } ModShiftE { quit; } }保存后按ModReturnTTY 下 Mod 即 Super 键就能打开终端。此时你已经有一个可用的平铺桌面了。窗口怎么摆列、间隙与命名工作区调整列宽与间隙niri 里每个窗口占一列列宽可以是输出宽度的比例。这段配置实现1/3、1/2、2/3 三种列宽循环切换窗口间留 16px 间隙layout { gaps 16 center-focused-column on-overflow preset-column-widths { proportion 0.33333 proportion 0.5 proportion 0.66667 } default-column-width { proportion 0.5; } }之后按ModR就能在三档列宽之间循环center-focused-column on-overflow让聚焦的列在放不下一屏时自动居中。如果顶部或侧边常驻面板bar挡住了窗口用struts在对应边缘预留空间而不是调间隙layout { struts { top 64 } }给应用固定专属工作区想固定浏览器在 1、聊天在 2这种秩序命名工作区是常驻的没有窗口也不会消失配合窗口规则可以把应用直接送到指定工作区workspace chat { open-on-output DP-2 } window-rule { match app-idr#^org\.gnome\.Fractal$# open-on-workspace chat }上面的规则让 Fractal 聊天应用一启动就落在名为chat的工作区。完整的工作区行为顺序、移动、open-on-workspace细节在 docs/wiki/Configuration:-Named-Workspaces.md 有说明。窗口放大的三种方式niri 区分三种变大快捷键各不相同最大化列maximize-column默认ModF列宽撑满一屏列内仍可放多个窗口间隙保留。最大化到边缘maximize-window-to-edges默认ModM单个窗口铺满可用区域看不到间隙和边框但顶部 bar 还在。全屏fullscreen-window默认ModShiftF盖住一切适合看视频和玩游戏。有意思的是全屏窗口在 niri 里仍是布局的普通成员——按ModShift/打开总览你能看到全屏窗口和其他列并排滚轮一推就能切回去。让手更顺快捷键绑定与输入如何绑定 niri 全局快捷键快捷键写在binds {}里格式是修饰键组合 XKB 键名 { 动作; }。注意binds是少数不会自动填充默认值的段落从零写配置时记得保留它。下面这组绑定实现开终端、截图、滚轮切工作区、按住 Mod 点左键关窗binds { ModT { spawn alacritty; } ModShiftS { spawn gnome-screenshot; } ModWheelScrollDown cooldown-ms150 { focus-workspace-down; } ModMouseLeft { close-window; } }几个容易踩的点spawn不经过 shell参数要逐个用引号分开需要$MAIN_OUTPUT、~这类展开时改用spawn-sh 完整命令行25.08 起支持。按住不放手绑定会连续重复触发对滚动类绑定建议加cooldown-ms限流。修饰了 Shift 的键要写成ModShift无Shift状态的键名比如美式键盘上的要绑定成ModShiftComma。所有可绑定动作的完整列表可以跑niri msg action查看docs/wiki/Configuration:-Key-Bindings.md 里有每个动作的细节。键盘与触控板怎么调这段配置实现美式布局、较快重复率、触控板自然滚动input { keyboard { xkb { layout us; } repeat-rate 30 repeat-delay 500 } touchpad { natural-scroll accel-speed 0.2 } }触控板开启natural-scroll后所有向上/向下语义的绑定包括上面那条滚轮绑定的方向会跟着反转——所以改自然滚动时滚轮绑定的方向要一起核对一遍。鼠标、数位板等设备的设置在同一段落下的mouse、tablet子段落结构类似。用滚动与热角落代替手势键不是每个人都有三指触摸板。niri 把常用手势做成了可绑定的滚动键和鼠标热角落gestures { hot-corners { top-right bottom-right } dnd-edge-view-scroll { trigger-width 100 max-speed 3000 } }效果鼠标推到屏幕右上角或右下角直接打开/关闭总览拖动文件贴住屏幕边缘时视图自动跟着滚跨列搬文件不再需要先手动滚动。dnd-edge-view-scroll的delay-ms默认 100ms跨屏拖拽时误触发就把它调大。让眼睛舒服动画与多显示器动画曲线怎么微调niri 的动画分两种缓动固定时长 曲线和弹簧物理参数。开关窗这类短动画用缓动更干脆窗口移动用弹簧更跟手——因为弹簧会继承你手指/滚轮释放时的速度。这段配置实现窗口弹出稍慢一点、移动动画干脆利落animations { window-open { duration-ms 200 curve ease-out-cubic } window-movement { spring damping-ratio1.0 stiffness800 } // slowdown 3.0 // 想整体放慢就取消这行注释 }不想细调的话animations段落里的slowdown 3.0一行就能全局减速off则一键关闭全部动画低性能机器或有晕动症时很有用。曲线和弹簧参数的更多选项见 docs/wiki/Configuration:-Animations.md。双屏输出模式怎么设多屏的核心是output段落按连接器名eDP-1、HDMI-A-1或厂商 型号 序列号匹配。先跑niri msg outputs看看你机器上的输出名和可用模式——注意刷新率要精确到小数点后三位。这段配置实现外接屏跑 144Hz 放在内置屏右侧内置屏 1.5 倍缩放output HDMI-A-1 { mode 2560x1440143.912 position x1920 y0 } output eDP-1 { scale 1.5 }几个实用细节高刷屏往往把 60Hz 报成首选模式不手动写mode就拿不到高刷新率。scale支持小数1.5 即 150%高 DPI 小屏建议 1.5 或 2 的整数/半整数避免文字发虚。某个屏幕暂时不用就写output xxx { off }不用物理拔线。完整选项旋转、hot-corners、自定义模式等见 docs/wiki/Configuration:-Outputs.md。卡住了怎么办三个高频问题配置报错改动没生效保存后 niri 会在屏幕上弹错误通知并回滚到上一份有效配置。想提前检查用niri validate它会解析~/.config/niri/config.kdl并列出所有语法错误和出错行号。KDL 语法的细节注释、段落、标志位在 docs/wiki/Configuration:-Introduction.md 有专门说明。快捷键不触发九成情况是 XKB 键名写错了。终端里装个wev按下按键后看输出里的sym:字段那就是键名。另外记住两条Shift 修饰的键要写无修饰状态的键名多语言布局下拉丁字母键按第一个能匹配到的布局解析。启动黑屏按显卡/系统分三种常见原因N 卡内核参数加nvidia-drm.modeset1开启 KMS并尽量用新版驱动NixOS系统 mesa 与 niri 自带 mesa 版本不同步黑屏时先对齐版本ARM / 虚拟机虚拟机要在设置里开 3D 加速渲染设备识别错时把debug { render-drm-device /dev/dri/renderD128 }写进配置试试。下一步桌面能用了之后值得继续翻的三块是 docs/wiki/Configuration:-Window-Rules.md按应用定制透明度、工作区、全屏行为、docs/wiki/Window-Effects.md阴影、模糊、自定义着色器以及 docs/wiki/Workspaces.md 里工作区切换的全部玩法——滚轮切工作区配上上面那组绑定基本就能形成自己的肌肉记忆了。【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考