niri 低功耗指南:让 Linux 笔记本多撑 4 小时的实用教程
2026/9/4 15:45:07 网站建设 项目流程

niri 低功耗指南:让 Linux 笔记本多撑 4 小时的实用教程

【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri

想让 Linux 笔记本多撑几个小时?答案往往不在应用层,而在显示栈本身。niri 这个滚动平铺式 Wayland 合成器把省电的几个关键开关都暴露成了明文的 kdl 配置:面板刷新率、动画开关、阴影与模糊、光标隐藏,全部一行一个参数。按下面的顺序把它们调完,多数高刷屏笔记本的综合功耗能降成原来的五分之三到七分之五,轻办公场景多撑 2~4 小时是常见结果(具体幅度取决于屏幕尺寸、面板类型和负载)。

niri 为什么有省电的底子

niri 的定位是一个滚动平铺式 Wayland 合成器:窗口默认按列平铺,超出视野的部分靠滚动查看,屏幕上同时需要渲染的内容天然比自由窗口桌面少。它的渲染路径比较精简——没有重型桌面外壳、没有常驻的合成特效层,动画、阴影、模糊全部是"默认开、可逐项关"的独立模块,配置热重载即生效。

平铺布局减少了同屏窗口数量,渲染与刷新负担随之下降,这是 niri 省电逻辑的第一层。

对续航敏感的用户来说,这种"每个耗能点都能单独关掉"的设计正好够用:你不必为了省电换桌面环境,只需要逐层拧参数。

屏幕层:一行配置锁定刷新率

屏幕是笔记本上最大的耗电部件,而 niri 在 显示器输出版文档 里把刷新率和可变刷新率都做成了显式配置,这是第一优先级的动作。

把高刷屏降回 60Hz

笔记本内屏通常是eDP-1。不写mode时,niri 会按面板首选模式点亮——高刷屏的首选模式往往就是 120/144Hz。先用niri msg outputs列出所有可用模式,再把刷新率写死:

output "eDP-1" { mode "1920x1080@60" }

注意刷新率必须和niri msg outputs里显示的小数点后三位完全一致。从 120Hz 降到 60Hz,面板和显示驱动的负载直接减半,空闲功耗的变化幅度通常是所有单项里最大的,高刷屏上省 1~2W 很常见。

可变刷新率按需开启

如果面板支持 VRR,可以让它在空闲时自动降频,而不是恒定满帧输出:

output "eDP-1" { variable-refresh-rate on-demand=true }

on-demand=true表示只有匹配的窗口(比如游戏、视频)存在时才启用 VRR,其余时间面板可以停留在低频档。若遇到光标卡顿等驱动问题,可参考文档中的disable-cursor-plane调试开关。

无论窗口平铺还是全屏,刷新率都是对整块面板生效的功耗项。

交互层:动画、阴影与模糊的省电参数

屏幕上的每一帧动态变化都要重新绘制。niri 的 动画配置文档 提供了从全局到单条动画的完整控制面。

动画:全关或快速短促

animations { off }

这一行关掉全部动画,工作区切换、窗口开合都变成瞬切,是省电上限最高的写法。想保留手感就只缩短、不减速——动画每多持续一帧就是一次额外绘制,方向应该是"更快结束"而不是拉长:

animations { window-open { duration-ms 100 curve "ease-out-quad" } }

阴影、模糊:能关则关

阴影和背景模糊是 GPU 的常驻开销。在 布局配置文档 和 杂项配置 中,两者都有独立的off开关:

layout { shadow { off } } blur { off }

blur { off }会连同窗口请求的背景模糊一起禁用。集成显卡机型上这两项的收益比独立显卡更明显。

阴影、模糊这类每帧附加绘制项,是交互层最容易省下的部分。

系统层:光标、亮度键与电源档位

最后把系统级的习惯动作接进 niri,让低功耗状态能一键进出。

光标闲置自动隐藏

cursor { hide-when-typing hide-after-inactive-ms 1000 }

打字时隐藏、闲置 1 秒后自动消失。光标是独立渲染平面,持续显示会阻止对应区域进入低频刷新,隐藏它是几乎零成本的小项。

亮度键与省电档位绑定

binds把笔记本自带亮度键接到 brightnessctl,参数要逐个分开写(spawn不走 shell):

binds { XF86MonBrightnessUp { spawn "brightnessctl" "set" "+5%"; } XF86MonBrightnessDown { spawn "brightnessctl" "set" "5%-"; } }

另外在系统层装上 power-profiles-daemon(发行版包名一般就叫它),出门前切到省电档、插电能自动切回:

powerprofilesctl set power-saver

这是 systemd 层面的全局档位,与 niri 配置互补:前者管 CPU/驱动策略,后者管显示栈。

验证:两个命令确认优化生效

niri msg outputs

先确认面板真的跑在你设置的mode上,刷新率没有回落到首选模式。再看整体功耗:

powertop --time=60

采样 60 秒,重点看 Average Power 一栏的数值是否低于改配置前。对照 niri 自己的重绘循环说明:空闲时没有内容变化就不会触发重绘,动画和特效关得越彻底,"正在绘制"状态出现得越少,功耗曲线越平。

这张状态机图解释了省电的底层机制:空闲时停在"无重绘"状态,GPU 才有机会降频。

回顾

  • 屏幕层:mode锁 60Hz +variable-refresh-rate on-demand=true,收益最大
  • 交互层:animations { off }shadow { off }blur { off },逐项可回收
  • 系统层:光标自动隐藏、亮度键绑定、powerprofilesctl set power-saver
  • 验证:niri msg outputs确认模式,powertop --time=60看平均功耗

所有参数均可热重载即时试错,感觉过度再单项调回来。想编译源码体验最新版本,仓库地址为https://gitcode.com/GitHub_Trending/ni/niri(clone 后即可按 开发文档 构建)。⚡ 先调屏幕层再调交互层,是性价比最高的顺序。🔋

【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询