
niri 配置实战按效果改 5 组 KDL 片段把可滚动平铺桌面调成自己的样子【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niriniri 是一个可滚动平铺的 Wayland 合成器窗口按列排布超出屏幕的部分可以横向滚动。本文面向想用键盘流管理窗口的开发者和设计师不照配置文件顺序逐项讲而是按你想要的效果给可直接粘贴的 KDL 片段覆盖布局密度、动画、双显示器、快捷键与工作区分区。所有改动保存后即时热加载无需重启。它替你解决了什么先说清两个典型场景你才知道哪些配置值得动场景 A一屏不够用但又不想手动切窗口。niri 把每个窗口放进一列多列从左到右排开滚到屏外也能按Mod方向键继续聚焦用ModCtrl方向键把当前列移走。你想调的其实是列有多宽窗口间留多少缝。场景 B外接一块副屏想把不同用途的窗口分开。副屏可以整块留给浏览器内置屏留给代码还能给某块屏单独定分辨率和缩放。下面按这两个诉求加上更顺手的动画/快捷键/分区逐组给片段。最短路径跑起来装发行版包或直接编译# Ubuntu/Debian依赖 编译 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 # 编译前需先安装 Rustrustup git clone https://gitcode.com/GitHub_Trending/ni/niri cd niri cargo build --release这一步只装依赖和编译出二进制改什么无。为什么niri 用 Rust 写成编译一次后放系统里。改完看到什么target/release/niri生成即可运行。启动方式二选一在显示管理器如 GDM里选 Niri 登录或在 TTY 里跑niri-sessionsystemd/niri --session其它。首次启动会生成默认配置~/.config/niri/config.kdl后面所有片段都往这个文件里加。提示配置是 KDL 语法//是注释/-可注释掉整个小节。多数小节漏写会用默认值唯独binds不会自动补全别删掉它。按效果定制 KDL让窗口更紧凑或更宽松改什么layout里的gaps窗口内外缝隙和struts贴边额外留白。为什么默认缝隙可能太挤或太散这里统一控制密度。改完看到什么所有窗口间距同步变化。layout { gaps 16 // 缝隙逻辑像素越小越紧凑 struts { left 16 // 贴左边的额外留白用负值可让相邻列peek出来 right 16 } }想让只有列与列之间留缝、而贴屏幕边缘不留缝把struts设成与gaps相反的负值即可这招比逐窗口改省事。让新窗口默认就占合适宽度改什么default-column-width新列初始宽度。为什么默认宽度可能不合你习惯这里定初始尺寸。改完看到什么以后开的新窗口都按此宽。layout { default-column-width { proportion 0.5 } // 新窗口默认占屏宽一半 }配合ModR可在预设列宽间循环想要更多档位就往preset-column-widths里加。让窗口打开/关闭更顺改什么animations下的各项。为什么默认曲线偏快改成弹簧更有跟手感尤其配合触摸板滑动。改完看到什么窗口开合与移动更连贯。animations { window-open { duration-ms 200 curve ease-out-expo // 开缓动可换 cubic-bezier } window-movement { spring damping-ratio1.0 stiffness800 // 移动弹簧damping 越低越有回弹 } }想让整个界面更稳或更飘直接改stiffness越低越慢想要回弹就把damping-ratio调到 1.0 以下别超过 1.0 以免出现数值抖动。让双显示器按物理摆放改什么每个output的mode、scale、position。为什么默认自动摆放可能和物理方向不符。改完看到什么副屏到指定位置、指定分辨率。output HDMI-A-1 { mode 2560x144060 // 宽x高刷新率刷新率必须与 niri msg outputs 完全一致 scale 1.0 // 缩放HiDPI 屏用 2 position x1280 y0 // 全局坐标单位是缩放后的逻辑像素不是物理像素 }注意position的 x 要按逻辑像素算一块scale 2的 4K 屏逻辑宽只有 1920旁边那屏的 x 就填 1920。填错会导致光标到不了副屏。输出名可用niri msg outputs查。让全屏/窗口观感到位改什么workspace分区 窗口圆角规则。为什么把浏览器、聊天类固定到某块屏、某层工作区观感更整齐。改完看到什么指定应用直接落到目标屏。workspace browser { open-on-output HDMI-A-1 } // 命名工作区常驻该屏 window-rule { match app-idr#^org\.chromium\.Chromium$# open-on-workspace browser geometry-corner-radius 12 // 全窗口统一圆角 clip-to-geometry true }让常用动作一键触发改什么binds里的键位。为什么默认键位不一定合你手。改完看到什么自定义组合键生效。binds { ModReturn { spawn alacritty; } // 程序名 参数要分开加引号不走 shell ModQ { close-window; } ModLeft { focus-column-left; } // 聚焦左列加 Ctrl 则移动而非聚焦 ModRight { focus-column-right; } }spawn不经过 shell参数逐个加引号要跑管道/展开变量就用spawn-sh 整条命令。高频问题速查现象改了配置保存后毫无变化。原因KDL 语法写错会导致整个文件解析失败、回退旧配置而不是只失效那一行。修复跑niri validate看报错行号改完再存。它只校验不启动是最小的排查动作。现象副屏位置不对光标滑不过去。原因position填的是物理像素没除以缩放系数。修复把 x/y 换成逻辑像素物理值 ÷ scale与niri msg outputs的分辨率对齐。现象窗口边框/圆角被应用自带的 CSD 挡住透明窗口发色。原因很多应用画自己的圆角/阴影盖住 niri 的边框。修复顶层加prefer-no-csd后重启应用让 niri 在窗口外画边框个别顽固的再加clip-to-geometry true规则。下一步动作把上面任意一组片段粘进~/.config/niri/config.kdl保存然后立刻校验niri validate看到无报错即生效要核对双屏实际分辨率与刷新率跑niri msg outputs把mode里的刷新率按它逐位填准即可。【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考