2210 字
11 分钟
Niri 的安装与使用
安装
arch系安装:niri包
- 后端依赖:
- 基础包:
xdg-desktop-portal(必装)- Wayland 合成器功能:
xdg-desktop-portal-wlr(Wayland专用/必装) - GTK应用支持:
xdg-desktop-portal-gtk(强烈推荐) - GNOME 应用支持:
xdg-desktop-portal-gnome- KDE 应用支持:
xdg-desktop-portal-kde
- KDE 应用支持:
- wxWidgets 应用支持:
xdg-desktop-portal-wxgtk - 运行 Qt5 应用:
xdg-desktop-portal-qt5 - 运行 Qt6 应用:
xdg-desktop-portal-qt6
- Wayland 合成器功能:
- 基础包:
- 安装xwayland兼容:
xorg-xwayland和xwayland-satellitexorg-xwayland:传统的 Xwayland 服务器,用于在 Wayland 环境中运行 X11 应用程序xwayland-satellite:专门为 niri 设计的 Xwayland 管理工具,提供更好的集成和认证管理
使用
安装 [[桌面shell]]
配置文件
- 配置文件:
- 用户级配置文件:
~/.config/niri/config.kdl
- 用户级配置文件:
- 验证配置文件:
niri validate
主配置文件
// ============================================// Niri 主配置文件// 快捷键配置已分离到 binds.kdl// ============================================
// 包含快捷键配置文件include "binds.kdl"
// 键盘鼠标触摸板等输入设备相关配置input { // 禁用触摸板(Touchpad) touchpad { off; }
keyboard { xkb { layout "us" // 可选:添加更多键盘布局选项 // vaIIInt "altgr-intl" // options "ctrl:nocaps" // 将CapsLock用作Ctrl键 }
// 在启动上启用 numlock,省略此设置会禁用它 numlock
// 可选:重复按键设置 // repeat-delay 600 // repeat-rate 25 }
mouse { accel-profile "flat" // 可选:调整鼠标速度 (-1到1之间由慢到快) // accel-speed 0.5 }
// 鼠标移动到新聚焦的窗口 warp-mouse-to-focus
// 聚焦鼠标移动到的窗口上 focus-follows-mouse
// 切换mod键:正常使用Super,嵌套窗口内使用Alt // mod-key "Super" // mod-key-nested "Alt"
// 可选:禁用电源键处理(使用系统默认功能) // disable-power-key-handling}
// 显示器配置// 运行 `niri msg outputs` 或 `wlr-randr` 查看显示器名称output "eDP-1" { mode "2560x1440@165.000" scale 1.33 position x=0 y=0 focus-at-startup // 可选:旋转显示器 // transform "normal" // normal, 90, 180, 270, flipped, flipped-90, flipped-180, flipped-270}
// 如果有多个显示器,可以添加更多配置// output "HDMI-A-1" {// mode "1920x1080@60.000"// scale 1.0// position x=2560 y=0// }
// 窗口布局设置layout { // 窗口周围的缝隙(逻辑像素) gaps 5
// 背景颜色(工作区透明) background-color "transparent"
// 存在多个窗口时,未最大化的窗口不自动居中,方便分屏 center-focused-column "never"
// 只有一个窗口时自动居中显示 always-center-single-column
// 预设列宽度(使用Mod+R切换) preset-column-widths { proportion 0.3 // 30%宽度 proportion 0.5 // 50%宽度 proportion 0.7556 // 75.56%宽度 proportion 1.0 // 100%宽度 // 也可以使用固定像素宽度(受scale影响) // fixed 1920 } // ============================================ // 隐藏窗口标题栏 // ============================================ // prefer-no-csd
// 预设窗口高度(使用Mod+Shift+R切换) preset-window-heights { proportion 0.5 // 50%高度 proportion 0.8 // 80%高度 proportion 1.0 // 100%高度 }
// 聚焦环设置(可选) focus-ring { off // 关闭聚焦环 // 或者自定义颜色 // active-color "#61AFEF" // inactive-color "#505050" }
// 边框设置 border { on width 2.5 active-color "#4ec9b0" inactive-color "#505050" }}
// ============================================// 环境变量设置// ============================================environment { // 语言和区域设置 LANG "zh_CN.UTF-8" LC_CTYPE "zh_CN.UTF-8" LC_NUMERIC "zh_CN.UTF-8" LC_TIME "zh_CN.UTF-8" LC_COLLATE "zh_CN.UTF-8" LC_MONETARY "zh_CN.UTF-8" LC_MESSAGES "zh_CN.UTF-8" LC_PAPER "zh_CN.UTF-8" LC_NAME "zh_CN.UTF-8" LC_ADDRESS "zh_CN.UTF-8" LC_TELEPHONE "zh_CN.UTF-8" LC_MEASUREMENT "zh_CN.UTF-8" LC_IDENTIFICATION "zh_CN.UTF-8"
// Wayland 相关环境变量 QT_QPA_PLATFORM "wayland" GDK_BACKEND "wayland" SDL_VIDEODRIVER "wayland" MOZ_ENABLE_WAYLAND "1" ELECTRON_OZONE_PLATFORM_HINT "wayland"
// 输入法设置 QT_QPA_PLATFORMTHEME "qt6ct" QT_IM_MODULE "fcitx" XMODIFIERS "@im=fcitx" QT_IM_MODULES "wayland;fcitx"
// 代理设置(可选) // ALL_PROXY "http://127.0.0.1:7890" // HTTP_PROXY "http://127.0.0.1:7890" // HTTPS_PROXY "http://127.0.0.1:7890"}
// ============================================// 自启动程序// ============================================spawn-at-startup "fcitx5" "-d"spawn-at-startup "xwayland-satellite"spawn-at-startup "qs" "-c" "noctalia-shell"// spawn-at-startup "/usr/lib/polkit-kde-authentication-agent-1"
// 可选:添加更多自启动程序// spawn-at-startup "waybar"// spawn-at-startup "swaync"// spawn-at-startup "swayidle" "-w" "timeout" "601" "niri msg action power-off-monitors" "timeout" "600" "swaylock -f" "before-sleep" "swaylock -f"// spawn-at-startup "niri-switch-daemon"
// 使用shell命令启动(支持变量、管道等)spawn-sh-at-startup "wl-paste --watch cliphist store"// spawn-sh-at-startup "swaybg -i ~/Pictures/wallpaper.jpg -m fill"
// ============================================// 内部窗口规则// ============================================window-rule { geometry-corner-radius 12 clip-to-geometry true opacity 1.0 // 设置窗口不透明度为 100%}
// 可选:为特定应用添加规则// window-rule {// match app-id="firefox"// default-column-width { proportion 0.8; }// open-on-output "eDP-1"// }
// window-rule {// match app-id="alacritty"// default-column-width { proportion 0.5; }// }
// Steam 全屏游戏规则window-rule { match app-id="steam" default-column-width { proportion 1.0; }}
//kitty 背景透明的设置window-rule { match app-id="kitty" opacity 0.8 draw-border-with-background false}
// ============================================// 光标设置// ============================================cursor { xcursor-theme "breeze" xcursor-size 24 hide-when-typing}// ============================================// 动画设置// ============================================animations { // 窗口出现 window-open { duration-ms 150 curve "ease-out-expo" } // 窗口消失 window-close { duration-ms 150 curve "ease-out-quad" } // 窗口在列内移动 // window-move{} // 工作区切换 workspace-switch{ duration-ms 250 curve "cubic-bezier" 0.42 0.0 0.58 1.0 } }
// ============================================// 截图设置// ============================================screenshot-path "~/Pictures/ScreenShot/%Y-%m-%d %H-%M-%S.png"
hotkey-overlay { // 跳过“重要的热键”弹出窗口。 skip-at-startup}
// 禁用鼠标左上角热脚gestures { hot-corners { off }}快捷键配置文件
- 在配置文件中添加:
include "binds.kdl"分离快捷键配置文件
// ============================================// Niri 快捷键配置文件// 包含所有快捷键绑定// 快捷键需要使用完整的xkb键名// ============================================binds { // ========== 系统级快捷键 ========== Mod+Shift+E hotkey-overlay-title="退出 niri" { quit; } Control+D hotkey-overlay-title="关闭当前窗口" { close-window; } Mod+Shift+Slash hotkey-overlay-title="显示快捷键列表" { show-hotkey-overlay; }
// ========== 窗口导航快捷键 ========== // 基础导航 Mod+Left hotkey-overlay-title="方向键向左切换窗口" { focus-column-left; } Mod+Right hotkey-overlay-title="方向键向右切换窗口" { focus-column-right; } Mod+Down hotkey-overlay-title="方向键向下切换列" { focus-workspace-down; } Mod+Up hotkey-overlay-title="方向键向上切换列" { focus-workspace-up; }
// 移动窗口 Mod+Shift+Left hotkey-overlay-title="向左移动列" { move-column-left; } Mod+Shift+Right hotkey-overlay-title="向右移动列" { move-column-right; } Mod+Shift+Down hotkey-overlay-title="向下移动窗口" { move-window-down; } Mod+Shift+Up hotkey-overlay-title="向上移动窗口" { move-window-up; }
// 快速导航 Mod+Home hotkey-overlay-title="聚焦第一列" { focus-column-first; } Mod+End hotkey-overlay-title="聚焦最后一列" { focus-column-last; }
// ========== 窗口管理快捷键 ========== Mod+R hotkey-overlay-title="切换预设列宽" { switch-preset-column-width; } Mod+Shift+R hotkey-overlay-title="切换预设窗口高度" { switch-preset-window-height; } Mod+F hotkey-overlay-title="扩展列到可用宽度" { expand-column-to-available-width; } Mod+W hotkey-overlay-title="切换窗口全屏" { toggle-windowed-fullscreen; } Mod+C hotkey-overlay-title="居中当前列" { center-column; } Mod+Ctrl+C hotkey-overlay-title="居中所有可见列" { center-visible-columns; }
// 调整列宽/高度 Mod+Minus hotkey-overlay-title="减少列宽10%" { set-column-width "-10%"; } Mod+Equal hotkey-overlay-title="增加列宽10%" { set-column-width "+10%"; } Mod+Shift+Minus hotkey-overlay-title="减少窗口高度10%" { set-window-height "-10%"; } Mod+Shift+Equal hotkey-overlay-title="增加窗口高度10%" { set-window-height "+10%"; }
// ========== 工作区管理 ========== // 工作区切换(1-9) Mod+1 hotkey-overlay-title="切换到工作区1" { focus-workspace 1; } Mod+2 hotkey-overlay-title="切换到工作区2" { focus-workspace 2; } Mod+3 hotkey-overlay-title="切换到工作区3" { focus-workspace 3; } Mod+4 hotkey-overlay-title="切换到工作区4" { focus-workspace 4; } Mod+5 hotkey-overlay-title="切换到工作区5" { focus-workspace 5; } Mod+6 hotkey-overlay-title="切换到工作区6" { focus-workspace 6; } Mod+7 hotkey-overlay-title="切换到工作区7" { focus-workspace 7; } Mod+8 hotkey-overlay-title="切换到工作区8" { focus-workspace 8; } Mod+9 hotkey-overlay-title="切换到工作区9" { focus-workspace 9; } Mod+0 hotkey-overlay-title="切换到工作区10" { focus-workspace 10; }
// 移动窗口到工作区 Mod+Shift+1 hotkey-overlay-title="移动列到工作区1" { move-column-to-workspace 1; } Mod+Shift+2 hotkey-overlay-title="移动列到工作区2" { move-column-to-workspace 2; } Mod+Shift+3 hotkey-overlay-title="移动列到工作区3" { move-column-to-workspace 3; } Mod+Shift+4 hotkey-overlay-title="移动列到工作区4" { move-column-to-workspace 4; } Mod+Shift+5 hotkey-overlay-title="移动列到工作区5" { move-column-to-workspace 5; } Mod+Shift+6 hotkey-overlay-title="移动列到工作区6" { move-column-to-workspace 6; } Mod+Shift+7 hotkey-overlay-title="移动列到工作区7" { move-column-to-workspace 7; } Mod+Shift+8 hotkey-overlay-title="移动列到工作区8" { move-column-to-workspace 8; } Mod+Shift+9 hotkey-overlay-title="移动列到工作区9" { move-column-to-workspace 9; } Mod+Shift+0 hotkey-overlay-title="移动列到工作区10" { move-column-to-workspace 10; }
// ========== 应用程序启动快捷键 ========== // 打开Noctalia shell启动器 Alt+Space { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "toggle"; } // 打开 kitty 终端模拟器 Mod+T { spawn "kitty"; }
// ========== 实用工具快捷键 ========== // 打开剪贴板 mod+V { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "launcher" "clipboard"; }
// 截图功能 Print hotkey-overlay-title="截图(全屏)" { screenshot show-pointer=false; } Shift+Print hotkey-overlay-title="截图(选择区域)" { spawn-sh "grim -g \"$(slurp)\" - | wl-copy"; } Ctrl+Print hotkey-overlay-title="截图屏幕(保存)" { screenshot-screen write-to-disk=true; } Alt+Print hotkey-overlay-title="截图窗口(保存)" { screenshot-window write-to-disk=true; }
// 锁屏 mod+L { spawn "qs" "-c" "noctalia-shell" "ipc" "call" "lockScreen" "lock"; }
// ========== 多媒体控制 ========== // 音量控制(锁屏时也可用) XF86AudioRaiseVolume allow-when-locked=true hotkey-overlay-title="增加音量" { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1+"; } XF86AudioLowerVolume allow-when-locked=true hotkey-overlay-title="降低音量" { spawn-sh "wpctl set-volume @DEFAULT_AUDIO_SINK@ 0.1-"; } XF86AudioMute allow-when-locked=true hotkey-overlay-title="静音/取消静音" { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SINK@ toggle"; } XF86AudioMicMute allow-when-locked=true hotkey-overlay-title="麦克风静音" { spawn-sh "wpctl set-mute @DEFAULT_AUDIO_SOURCE@ toggle"; }
// 亮度控制(锁屏时也可用) XF86MonBrightnessUp allow-when-locked=true hotkey-overlay-title="增加亮度" { spawn "brightnessctl" "set" "+10%"; } XF86MonBrightnessDown allow-when-locked=true hotkey-overlay-title="降低亮度" { spawn "brightnessctl" "set" "10%-"; }
// ========== 鼠标滚轮绑定 ========== // 工作区切换 Mod+WheelScrollDown cooldown-ms=150 hotkey-overlay-title="滚轮向下:下一个工作区" { focus-workspace-down; } Mod+WheelScrollUp cooldown-ms=150 hotkey-overlay-title="滚轮向上:上一个工作区" { focus-workspace-up; }
// 列切换(可适配触摸板) Mod+WheelScrollRight hotkey-overlay-title="滚轮向右:向右聚焦列" { focus-column-right; } Mod+WheelScrollLeft hotkey-overlay-title="滚轮向左:向左聚焦列" { focus-column-left; }
// 移动窗口到工作区 Mod+Ctrl+WheelScrollDown cooldown-ms=150 { move-column-to-workspace-down; } Mod+Ctrl+WheelScrollUp cooldown-ms=150 { move-column-to-workspace-up; }
// ========== 高级功能 ========== // 切换悬浮窗口 Mod+Shift+Space hotkey-overlay-title="切换窗口悬浮状态" { toggle-window-floating; } Mod+Space hotkey-overlay-title="在悬浮和平铺窗口间切换焦点" { switch-focus-between-floating-and-tiling; }
// 切换标签页模式 Mod+X hotkey-overlay-title="切换列标签页显示" { toggle-column-tabbed-display; }
// 关闭显示器 Mod+Shift+P hotkey-overlay-title="关闭显示器" { power-off-monitors; }
// 调试快捷键 Mod+Shift+Ctrl+D hotkey-overlay-title="调试:切换损伤显示" { debug-toggle-damage; } Mod+Escape allow-inhibiting=false hotkey-overlay-title="切换键盘快捷键抑制" { toggle-keyboard-shortcuts-inhibit; }
// 切换概览 Mod+G repeat=false hotkey-overlay-title="切换概览" { toggle-overview; }
// 窗口选择器 默认为 Alt+Tab