niri 如何配置 recent-windows 自定义 Alt-Tab 切换器的延迟、预览与作用域?
niri 如何配置 recent-windows 自定义 Alt-Tab 切换器的延迟、预览与作用域【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niriniri 从 25.11 版本起提供recent-windows {}配置段用于自定义内置的 Alt-Tab 窗口切换器。如果你希望调整切换器的响应延迟、窗口预览的大小或者让切换范围固定在单个输出output或工作区workspace内本文给出对应的 KDL 配置写法。前提是你已经在运行 niri并能编辑其配置文件 配置文件加载说明。前提找到并编辑配置文件niri 依次从$XDG_CONFIG_HOME/niri/config.kdl或~/.config/niri/config.kdl加载配置找不到时回退到/etc/niri/config.kdl。配置是热加载的编辑并保存文件后改动立即生效包括按键绑定无需重启 niri。在改动前如果两个位置都没有配置文件niri 会用构建时嵌入的默认配置创建~/.config/niri/config.kdl。文档建议以这份默认配置作为你自定义配置的起点。改完后可以先做一次语法检查niri validate该命令会解析配置并报告错误。确认无误后再实际按组合键验证效果。先认识整段配置的默认值这是文档给出的recent-windows {}完整默认值大纲后续所有调整都是在它的基础上做局部覆盖recent-windows { // off debounce-ms 750 open-delay-ms 150 highlight { active-color #999999ff urgent-color #ff9999ff padding 30 corner-radius 0 } previews { max-height 480 max-scale 0.5 } binds { AltTab { next-window; } AltShiftTab { previous-window; } Altgrave { next-window filterapp-id; } AltShiftgrave { previous-window filterapp-id; } ModTab { next-window; } ModShiftTab { previous-window; } Modgrave { next-window filterapp-id; } ModShiftgrave { previous-window filterapp-id; } } }注意大纲开头的// off是注释写入off会完全禁用最近窗口切换器除非你想禁用否则不要保留这一行。调整两处延迟debounce-ms 与 open-delay-msrecent-windows段里有两个不同的延迟参数作用点不一样debounce-ms默认 750窗口获得焦点到被提交进最近窗口列表之间的延迟单位毫秒。它的存在是为了防止中间窗口污染列表——键盘导航时经过的窗口、或 focus-follows-mouse 模式下鼠标移向目标窗口途中扫过的窗口都会因这个延迟而不进入列表。对目标窗口直接进行键盘输入等操作会跳过该延迟、立即提交列表的响应性不会因此变差。open-delay-ms默认 150按下 Alt-Tab 绑定与切换器在屏幕上可见之间出现的延迟。默认有延迟是为了快速轻点 Alt-Tab 切换窗口时不会引起全屏的视觉干扰。想让窗口包括中间经过的窗口立刻进入最近窗口列表把debounce-ms调低或置零recent-windows { // Commit windows to the recent windows list as soon as theyre focused, // with no debounce delay. debounce-ms 0 }想让切换器在按下绑定后立刻出现比如快速连按时也想看到切换器反馈recent-windows { // Make the switcher appear instantly. open-delay-ms 0 }调整窗口预览previews 与 highlightpreviews {}控制切换器里窗口预览的大小max-scale默认 0.5预览的最大缩放窗口不会被放大超过这个值。该限制会施加两次一次在最终窗口缩放上另一次限制窗口高度不得超过monitor height × max scale。max-height默认 480预览的最大高度用于在大显示器上限制预览占用空间。文档的说明是小显示器上预览主要受max-scale限制大显示器上主要受max-height限制。想让预览变小、一屏放得下更多窗口recent-windows { // Make the previews smaller to fit more on screen. previews { max-height 320 } }想让预览更大、能看清窗口内容注意高度和缩放要一起放大recent-windows { // Make the previews larger to see the window contents. previews { max-height 1080 max-scale 0.75 } }highlight {}控制切换器中当前选中窗口预览背后的高亮框四个属性及默认值active-color普通选中高亮颜色默认#999999ffurgent-colorurgent 状态窗口的选中高亮颜色在未选中窗口上也会以较暗的颜色显示默认#ff9999ffpadding高亮围绕预览的内边距逻辑像素默认 30corner-radius高亮圆角半径默认 0。例如给高亮加圆角recent-windows { // Round the corners on the highlight. highlight { corner-radius 14 } }配置作用域与按键binds、scope 与 filterbinds {}段配置打开和导航切换器的绑定。默认是AltTab/ModTab在所有窗口间切换Alt/kbd / kbdMod/kbdkbd在当前应用的窗口间切换加上Shift反向切换。两个可用属性filterapp-id按 Wayland app ID 将切换器过滤到当前选中的应用的窗口scopeall/scopeoutput/scopeworkspace设置用该绑定打开切换器时预选的作用域。想让 ModTab 系列默认预选 Output 作用域recent-windows { // Pre-select the Output scope when switching windows. binds { ModTab { next-window scopeoutput; } ModShiftTab { previous-window scopeoutput; } Modgrave { next-window scopeoutput filterapp-id; } ModShiftgrave { previous-window scopeoutput filterapp-id; } } }配置binds时文档给出三条硬性约束直接决定配置能否生效覆盖即全清只要在你的配置里写出recent-windows的binds {}段哪怕内容是空的所有默认绑定都会被移除。需要保留的绑定要从页面顶部的默认值大纲里复制过来。空binds {}的效果等价于完全取消 Alt-Tab 支持recent-windows { // Even an empty binds {} section will remove all default binds. binds { } }必须有修饰键该段里的所有绑定都必须带Alt或Mod这样的修饰键因为切换器只在你按住任意修饰键期间保持打开。优先级低于普通 binds如果普通 binds 段 里已经把AltTab绑给了别的动作recent-windows的同键绑定不会生效此时把冲突的普通绑定移除即可。切换器打开时的键盘操作切换器处于打开状态时有一组硬编码按键Escape取消切换器Enter确认当前窗口并关闭切换器A/W/O分别选择某一作用域S在作用域间循环切换顶部面板会显示当前作用域←/→/Home/End方向性移动选中项。此外部分普通绑定会在切换器内自动生效——niri 找到这些动作对应的普通绑定取其中的裸键不带修饰键作为触发键左/右列聚焦及其变体移动选中项、首/末列聚焦移到第一个或最后一个窗口、关闭窗口关闭切换器中当前选中的窗口、截图打开截图 UI。文档的例子若普通绑定里ModShiftC是close-window那么在切换器里单独按C即可关闭当前选中窗口。你的自定义布局如 Colemak-DH 的 MNEI 方向键绑给这些动作后同样会在切换器内工作前提是键不与硬编码按键冲突。验证配置是否生效保存config.kdl后按下面的顺序确认在终端运行niri validate确认配置解析没有报错配置是热加载的保存即生效直接按AltTab或你自定义的绑定观察open-delay-ms 0时切换器应立即出现不再等待 150ms检查预览大小预览应遵循你设置的max-height/max-scale若在大显示器上预览仍偏大或偏小检查是否只改了其中一项——两项限制会同时生效取更紧的那个检查作用域用带scopeoutput的绑定打开切换器顶部面板应显示预选的作用域列表里只包含该输出的窗口在切换器内按S可以手动循环到其它作用域确认列表范围符合预期如果按绑定没反应先检查普通binds {}段是否占用了同一个键recent-windows 绑定优先级更低再检查该绑定是否带了修饰键。相关文档配置段完整文档Configuration: Recent Windows配置文件加载、KDL 语法与niri validateConfiguration: Introduction普通按键绑定与 recent-windows 绑定的优先级关系在此处定义Configuration: Key Bindings切换器关闭动画animations { recent-windows-close { ... } }同为 25.11 引入spring 动画参数damping-ratio、stiffness、epsilon可在动画配置段调整Configuration: Animations【免费下载链接】niriA scrollable-tiling Wayland compositor.项目地址: https://gitcode.com/GitHub_Trending/ni/niri创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联
返回资讯列表 →