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
      • wxWidgets 应用支持:xdg-desktop-portal-wxgtk
      • 运行 Qt5 应用:xdg-desktop-portal-qt5
      • 运行 Qt6 应用:xdg-desktop-portal-qt6
  • 安装xwayland兼容:xorg-xwaylandxwayland-satellite
    • xorg-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
Niri 的安装与使用
https://gtlx.ltd/posts/niri的安装与使用/
作者
GTLX
发布于
2026-01-24
许可协议
CC BY-NC-SA 4.0