4031 字
20 分钟
安装Niri
2026-05-27
2026-05-28

主目录:返回主目录#

上一节:快照和系统维护#

我选择安装的桌面环境是 Niri,只配置了最基础的美化。

如果想一键配置,可以参考这套教程的原作者的项目:

SHORiN-KiWATA
/
shorin-arch-setup
Waiting for api.github.com...
00K
0K
0K
Waiting...

可选:更换shell为fish#

FishShell

由于会频繁用到命令行,有一个便利的shell会方便很多

sudo pacman -S fish
vim ~/.config/fish/config.fish

写入:

set fish_greeting ""

运行fish命令即可打开fish。

安装#

Niri-Getting-Started

  1. 安装

    sudo pacman -S niri xwayland-satellite xdg-desktop-portal-gnome fuzzel alacritty kitty firefox

    出现选项选择pipewire-jack

  2. 第一次运行(此时会生成配置文件)

    运行niri-session打开niri会话。有显示管理器的话在显示管理器切换会话。

  3. 可选:修改默认终端

    如果你使用的是别的终端的话可以编辑配置文件修改按键打开的终端。

    super+shift+E退出niri

    Terminal window
    vim ~/.config/niri/config.kdl

    PS:没有特指的话后面所有“编辑配置文件”指的都是这个文件。

    /键,搜索alacritty

    找到:

    Mod+T hotkey-overlay-title="Open a Terminal: alacritty" { spawn "alacritty"; }

    hotkey-overlay-title="Open a Terminal: alacritty"设置super+shift+/打开的界面里的显示内容。改成=null可以隐藏。

    spawn "alacritty"改成spawn "kitty" "-e" "fish"

    • 关于niri设置自定义快捷键

      当命令有多个部分时,有两种写法。一种是spawn,需要把命令分段写在多个引号里。

      spawn "kitty" "-e" "fish"

      另一种是spawn-sh,命令不用分段,直接写在一个引号里

      spawn-sh "kitty -e fish"

      -sh的写法性能消耗会略高一点(但是方便)

  4. 基础使用方法

    super+shift+/打开重要快捷键教程

    super+t打开终端

    super+d打开应用启动器

    super+u/i上下切换工作区

显示器配置#

niri_wiki_outputs

  1. 可选:GUI

    sudo pacman -S wdisplays

    PS:wdisplays可以临时修改显示设置,但无法保存到niri文件。

  2. 运行命令获取显示器信息

    niri msg outputs
    Terminal window
    Output "BOE NE156QHM-NY1 Unknown" (eDP-1)
    Current mode: 2560x1440 @ 165.000 Hz (preferred)
    Variable refresh rate: supported, disabled
    Physical size: 340x190 mm
    Logical position: 0, 0
    Logical size: 1920x1080
    Scale: 1.3333333333333333
    Transform: normal
    Available modes:
    2560x1440@165.000 (current, preferred)
    2560x1440@60.000 (preferred)
    ……………………
    Output "Shenzhen KTC Technology Group H27T22C 0x00000001" (DP-2)
    Current mode: 2560x1440 @ 180.000 Hz
    Variable refresh rate: supported, disabled
    Physical size: 600x330 mm
    Logical position: 1925, 0
    Logical size: 2560x1440
    Scale: 1
    Transform: normal
    Available modes:
    2560x1440@59.951 (preferred)
    2560x1440@180.000 (current)
    2560x1440@164.999
    ………………

    记住eDP-1DP-2这部分,然后在avaliable modes里找到自己需要的模式,格式为分辨率@刷新率

  3. 配置文件内修改output{}

    左斜杠搜索output在示例配置下面自己写一个

    output "eDP-1"{
    //分辨率和刷新率
    mode "2560x1440@165"
    //缩放倍率
    scale 1.33
    //位置,x=0 y=0代表最左上角
    position x=0 y=0
    //启动时聚焦此显示器
    focus-at-startup
    //取消下面这行的注释设置可变刷新率
    // variable-refresh-rate
    //取消下面这行的注释可以设置旋转,参数有:90, 180, 270, flipped(水平翻转), flipped-90(水平翻转后旋转), flipped-180 and flipped-270
    // transform "90"
    }

    有多个显示器的话就再写一个output{},把最左上角的显示器的位置设置为position x=0 y=0,然后计算其他显示器的位置。

    我的eDP-1显示器位置是x=0 y=0在最左上角,我想把DP-2显示器放在它的右边,那就要更改x=0的值。eDP-1是2560x1440分辨率,1.33缩放,那横向就是2560/1.33=1924.81203008,约等于1925。那我DP-2的位置就是x=1925 y=0。其他位置也是按照这个方法计算。想放在下面就修改y轴的值。设置了旋转的话计算的时候横竖的值也要对应旋转。

    output "DP-2"{
    mode "2560x1440@180"
    scale 1
    position x=1925 y=0
    }

关闭鼠标加速#

niri_wiki_input

找到input{mouse{}取消accel-profile "flat"的注释。

mouse {
//取消下面这行注释修改鼠标速度,正数加快,负数减慢
//accel-speed -0.2
//鼠标加速是默认开启的,设置这一行可以关闭鼠标加速度
accel-profile "flat"
//滚轮滚动速度,如果是负号的话会变更方向
//scroll-factor horizontal=2.0 vertical=-1.0
}

重要程序#

Niri-List-of-Important_Software

Niri-XWayland

  1. 安装

    sudo pacman -S libnotify mako polkit-gnome
  2. 设置重要程序随着niri启动

    niri会话是作为systemd服务启动的,所以可以用systemd启动那些重要程序,但是修改niri配置文件会更方便移植。

    vim ~/.config/niri/config.kdl

    搜索spawn-at-startup,在合适的地方写入:

    spawn-at-startup "/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1"
    spawn-at-startup "mako"
  3. 现在启动

    /usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1 & disown
    mako & disown
  • 编辑mako的配置文件设置通知的显示时长

    mkdir -p ~/.config/mako
    vim ~/.config/mako/config
    default-timeout=8000
    border-radius=8
    makoctl reload

修改系统语言为中文#

利用配置文件提供的环境变量功能设置系统语言。

environment {
LANG "zh_CN.UTF-8"
LC_CTYPE "en_US.UTF-8"
}

LANG变量设置本地化使用中文。再把LC_CTYPE设置为英文解决输入法漏字的异常。

安装中文输入法#

  1. 需要添加 archlinuxcn

  2. 安装

    Terminal window
    sudo pacman -S fcitx5-im
  3. 安装中文输入方案

    可以自己选择要安装的输入方案

    • 中文输入合集fcitx5-chinese-addons

      这里面包含了所有常用的中文输入方案(拼音、五笔、双拼等等)

      sudo pacman -S fcitx5-chinese-addons
    • RIME中州韵引擎+雾凇拼音

      1. 安装

        sudo pacman -S fcitx5-rime rime-ice-git

        可选:fcitx5-mozc日语输入法 rime-wubi五笔输入法

      2. 编辑配置文件启用rime雾凇拼音

        mkdir -p ~/.local/share/fcitx5/rime
        vim ~/.local/share/fcitx5/rime/default.custom.yaml

        第一行命令mkdir -p检查文件夹是否存在,不存在的话创建。第二行编辑配置文件,写入以下内容设置rime的默认方案为雾凇拼音:

        patch:
        # 这里的 rime_ice_suggestion 为雾凇方案的默认预设
        __include: rime_ice_suggestion:/
  4. 编辑环境变量

    sudo vim /etc/environment

    写入

    XMODIFIERS=@im=fcitx

    也可以在niri配置文件的environment{}里面写入XMODIFIERS "@im=fcitx"

  5. 系统设置

    1. 打开fcitx5配置进行设置 (先打开输入法 fcitx5 -d ,再Mod+D打开fcitx5,添加rime,还可以选快捷键)

    2. 在配置文件里设置自动启动fcitx5

      spawn-at-startup "fcitx5" "-d"

    记得在全局选项-行为里,把在程序中显示预编辑文本关了。

  6. 干净删除fcitx5

    1. 删除包

      sudo pacman -Rns fcitx5-im fcitx5-mozc fcitx5-rime rime-ice-pinyin-git
    2. 删除配置文件

      rm -rfv ~/.config/fcitx5 ~/.local/share/fcitx5
    3. 清理环境变量

      sudo vim /etc/environment

输入法异常的解决办法#

修改locale可以解决大部分问题,可以运行locale命令查看当前的locale环境变量都是什么。

LC_CTYPE环境变量设置为zh_CN.UTF-8时会导致输入法出现漏字现象,把它改成英文(⚠️注意:此变量为英文时可能会导致steam等应用完全不能使用中文输入法,遇到的话单独设置为中文就行。)

我们可以把LANG设置为中文,单独设置LC_CTYPE为英文。也可以把LANG设置为英文,用LC_MESSAGES设置界面为中文。

具体操作方法:

对桌面对应的设置locale或者环境变量的地方修改locale:

LANG=zh_CN.UTF-8
LC_CTYPE=en_US.UTF-8

或者

LANG=en_US.UTF-8
LC_MESSAGES=zh_CN.UTF-8
# 想让时间以中文显示要设置LC_TIME为中文

不知道写在哪就写在/etc/environment

如果你在某些软件完全无法使用输入法的话,继续往下看。

从快捷方式打开的话(.desktop)#

编辑.desktop文件修改Exec=后面的命令。

这些文件存放在/usr/share/applications~/.local/share/applications。不要直接修改/usr/share/applications里的文件,复制一份到用户空间再改。

  • 对于QT和GTK应用

    Exec= env GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx

    env设置启动时的环境变量

  • 对于chromium和electron应用

    以qq为例,在linuxqq 【此处】%U添加命令行参数

    --ozone-platform=wayland

    不行的话设置:

    --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime

    示例:

    Exec=env DESKTOPINTEGRATION=false /usr/bin/linuxqq --no-sandbox --ozone-platform=wayland %U

从终端命令打开的话#

上面的设置只对快捷方式打开生效,从终端用命令打开的话不一定生效。解决办法是编辑shell的配置文件单独设置alias。

  • zsh/bash

    编辑home目录下的.zshrc.bashrc文件,根据使用的shell而定。

    • QT或GTK应用(以typora为例)

      alias typora='GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx typora'
    • chromium和electron应用(以vscode为例)

      alias code='code --enable-features=UseOzonePlatform --ozone-platform=wayland --enable-wayland-ime'
  • fish

    fish的话有两种方法,一种是abbr,另一种是function

    • abbr

      abbr是自动替换命令

      abbr typora 'GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx typora'
      abbr code 'code --ozone-platform=wayland'
    • function

      function更改命令的功能

      function typora
      env GTK_IM_MODULE=fcitx QT_IM_MODULE=fcitx typora $argv
      end
      function code --description ‘启动code’
      exec code --ozone-platform=wayland $argv
      end

      function是函数,typora是要运行的命令,--description ''是描述,中间是这个命令的具体内容exec是运行后退出终端,如果要保持终端开启的话把exec换成command$argv传递typora命令后的选项和参数(有些应用不需要),end结尾。

配置图形化文档管理器#

安装xdg-desktop-portal-gnome会默认把nautilus装上,这是gnome的文档管理器。使用这条命令补全nautilus的功能。

sudo pacman -S ffmpegthumbnailer gvfs-smb nautilus-open-any-terminal file-roller gnome-keyring gst-plugins-base gst-plugins-good gst-libav

ffmpegthumbnailer视频预览

gvfs-smb 检查可挂载的外部设备,访问smb分享等功能

nautilus-open-any-terminal 右键从此处打开终端

file-roller 提供压缩解压缩功能

gnome-keyring提供密码保存功能。第一次保存密码会让你设置keyring的密码,可以空着。

gst-plugins-base gst-plugins-good gst-libav这些让你可以预览视频信息

可选:

nautilus-image-converter右键方便调整图片大小或者旋转

libheif webp-pixbuf-loader libopenraw gst-plugins-bad gst-plugins-ugly提供更多视频、图片格式支持

gnome-font-viewer字体缩略图

  • 更改默认终端为kitty

    安装xdg-terminal-exec

    yay -S xdg-terminal-exec

    编辑~/.config/xdg-terminals.list

    echo "kitty.desktop" > ~/.config/xdg-terminals.list

    如果有多个终端的话就按照顺序写多行。

  • 设置nautilus右键从此处打开kitty

    使用dbus设置dconf

    gsettings set com.github.stunkymonkey.nautilus-open-any-terminal terminal kitty
  • 设置右键从此处打开终端的shell为fish

    从nautilus右键打开kiity默认是bash,这里介绍另一种打开kitty就是fish的方法:

    可以修改kitty的配置文件设置kitty的shell为fish,顺便美化一下

    vim ~/.config/kitty/kitty.conf

    写入 shell fish

    #设置左右边距 window_padding_width 5

    #隐藏标题栏 hide_window_decorations yes

    #背景透明度 background_opacity 0.6

    #字体 font_family Adwaita Mono

    #字体大小 font_size 15

    #不要记住窗口大小(yes no) remember_window_size no

    #关闭窗口时不要询问是否关闭 confirm_os_window_close 0

  • 设置快捷键

    vim ~/.config/niri/config.kdl

    搜索bind

    Mod+E { spawn "nautilus";}
  • 如果nautilus启动慢

    是因为gtk4使用的新的渲染器和n卡驱动工具之间有一些兼容性问题,即这个包:‘nvidia-utils’,解决办法是编辑nautilus的环境变量,使用旧的渲染器。

    env GSK_RENDERER=gl nautilus
  • 如果无法打开重命名窗口

    加上GTK_IM_MODULE环境变量

    env GSK_RENDERER=gl GTK_IM_MODULE=fcitx nautilus
  • 如果打开软件发现UI字体过大 or 过小

    在终端打开软件,前面加上 QT_FONT_DPI 参数。比如发现WPS的字体太小,就在终端中输入

    QT_FONT_DPI=130 wps & disown

锁屏#

niri默认使用swaylock

  1. 安装

    sudo pacman -S swaylock-effects
  2. 创建目录并编辑配置文件

    mkdir -p ~/.config/swaylock
    vim ~/.config/swaylock/config
    screenshots
    clock
    indicator
    indicator-radius=200
    indicator-thickness=15
    effect-blur=10x5
    font=Noto Sans CJK SC # 如果不设置这一项并且你没有设置fontconfig的话中文会乱码,具体使用什么字体取决于你安装了哪个字体。可以使用gnome-font-viewer查看)

niri配置文件默认设置了一个Mod+Alt+L锁屏的快捷键,可以搜索swaylock自行修改

自动熄屏锁屏睡眠#

使用swayidle

  1. 安装

    sudo pacman -S swayidle
  2. 创建swayidle脚本

    虽然niri的wiki说可以使用systemd,但是为了方便移植,我使用脚本

    mkdir -p ~/.config/niri/scripts
    vim ~/.config/niri/scripts/swayidle.sh
    #!/usr/bin/env bash
    # 5分钟锁屏,10分钟熄屏,20分钟睡眠
    # swaylock -f是前台运行swaylock,如果不加的话后续的timeout命令会不生效
    swayidle -w \
    timeout 300 'swaylock -f' \
    timeout 600 'niri msg action power-off-monitors' \
    resume 'niri msg action power-on-monitors' \
    timeout 1200 'systemctl suspend' \

    因兼容性问题,此处会报错Failed to parse get BlockInhibited property: Invalid argument。属于正常情况,不影响脚本功能。

    添加可执行权限

    chmod +x ~/.config/niri/scripts/swayidle.sh

    现在开启(此处会有一个报错,正常,无视就行)

    bash ~/.config/niri/scripts/swayidle.sh & disown

    设置自动启动

    spawn-at-startup "~/.config/niri/scripts/swayidle.sh"

可以新建脚本

systemctl suspend && swaylock

添加快捷键手动休眠+锁屏。

蓝牙#

ArchWiki-Bluetooth

sudo pacman -S --needed bluez bluetui
sudo systemctl enable --now bluetooth

bluetui可以打开终端交互界面

剪贴板#

  1. 安装

    sudo pacman -S cliphist wl-clipboard
  2. 现在启动

    wl-paste --watch cliphist store & disown

    原理是开启wl-paste --watch监测剪贴板变化。每一次出现新条目时自动运行cliphist store保存到cliphist的历史记录里。

    cliphist保存的剪贴板历史可以通过cliphist list查看。

    cliphist decode通过传入的cliphist列表序号解码真实的数据,这个数据存放在.cache/cliphist/db

  3. 设置守护进程自动启动

    spawn-at-startup "wl-paste" "--watch" "cliphist" "store"
  4. 写个脚本

    安装 fzf

    sudo pacman -S fzf

    新建 bash 脚本,写入

    cliphist list | fzf | cliphist decode | wl-copy

    给执行权限

    chmod +x 脚本路径

    然后设置快捷键打开终端,执行脚本

    spawn-sh "kitty --override close_on_child_death=yes -e bash 脚本路径"

    清理:

    cliphist wipe # 直接删除所有内容

软件商城#

sudo pacman -S bazaar

笔记本屏幕亮度调节#

笔记本用户装这个包之后可以用笔记本键盘的快捷键调节屏幕亮度

sudo pacman -S brightnessctl

壁纸切换#

使用awwwwaypaper

  1. 安装

    yay -S awww waypaper
  2. 打开waypaper切换壁纸

  3. 设置awww-daemon自动启动

    spawn-at-startup "awww-daemon"
  4. 设置快捷键

    Mod+Alt+W {spawn "waypaper";}
  5. 设置窗口规则

    打开waypaper窗口,运行:

    niri msg pick-window

    选择waypaper窗口获取窗口信息,然后在niri的配置文件里面设置窗口规则

    window-rule {
    match app-id="waypaper"
    open-floating true
    }

面板(任务栏)#

Github-Wiki-Waybar

初学使用waybar即可

  1. 安装

    sudo pacman -S waybar ttf-jetbrains-mono-nerd otf-font-awesome
  2. 现在启动

    waybar & disown
  3. 开机自启

    编辑niri的配置文件

    vim ~/.config/niri/config.kdl
    spawn-at-startup "waybar"
  4. 设置重启waybar的快捷键

    后续自定义waybar需要频繁更新waybar配置,所以设置一个重启waybar的快捷键。

    vim ~/.config/niri/config.kdl

    找到快捷键的部分,新增以下内容

    Mod+F12 {spawn-sh "pkill waybar || true && waybar";}

    Mod+F12设置具体的快捷键为Mod+F12

    {spawn-sh "";}设置具体命令,与spawn不同,spawn-sh可以在引号里写入完整的命令,而spawn要把命令拆开放在多个引号里。

    pkill waybar按照进程名字关闭waybar

    ||如果左边的命令运行失败则运行右边的命令

    true输出一个运行成功的信号

    &&如果运行成功则运行下一条命令

    waybar开启waybar

waybar 的默认样式和配置在

/etc/xdg/waybar/config.jsonc
/etc/xdg/waybar/style.css

把他们复制到 ~/.config/waybar 下可以自行修改waybar样式和功能。

我只修改了样式,waybar背景栏改成

window#waybar {
background-color: rgba(0, 0, 0, 0);
/* border-bottom: 3px solid rgba(100, 114, 125, 0.5); */
color: #ffffff;
transition-property: background-color;
transition-duration: .5s;
}

我还修改了全局模块样式

{
padding: 0 10px;
color: #000000;
background-color: rgba(255,255,255,0.4);
border-radius: 8
}

然后可以选择清空部分模块的默认样式。

niri配置文件修改#

  1. 全局窗口规则

    搜索geometry-corner-radius,会搜到一个被注释掉的window-rule,这是niri默认配置配置文件自带的全局生效的窗口规则。删除前面的/-取消注释:

    window-rule {
    //圆角
    geometry-corner-radius 14
    //剪掉圆角外的窗口内容
    clip-to-geometry true
    //透明度
    opacity 0.99
    //禁止边框画到窗口后面
    draw-border-with-background false
    }

    还可以找一下 layout 项,减小窗口与屏幕边缘的距离。比如把 gaps 调成10,按照实际情况调整。

  2. 边框

    focus-ring可以调整窗口的边框。

  3. 隐藏窗口的标题栏

    prefer-no-csd
  4. 聚焦跟随鼠标

    搜索focus-follows-mouse,可设置focus-follows-mouse max-scroll-amount="50%"

  5. 切换聚焦自动移动鼠标到聚焦窗口上

    搜索warp-mouse-to-focus

  6. 切换光标主题

    sudo pacman -S breeze-cursors

    在合适的位置写入:

    cursor {
    //鼠标的光标主题
    xcursor-theme "breeze_cursors"
    //大小
    xcursor-size 30 # 根据实际情况调整
    //闲置15s自动隐藏光标
    hide-after-inactive-ms 15000
    }
  7. 自动窗口大小

    default-column-width {}
  8. 禁用按键教程的开机自启

    取消注释hotkey-overlay{}里面的skip-at-startup

  9. 窗口间隔

    调整layout{gaps }

  10. 预设窗口宽度

    layout{preset-column-widths{}}

  11. 聚焦窗口边框

    layout{focus-ring{}}

用git管理项目#

  1. 安装git

    sudo pacman -S git
    git --version
  2. 配置身份

    git config --global user.name "你的名字"
    git config --global user.email "你的邮箱"
  3. 设置ssh-key

    sudo pacman -S --needed openssh
    ssh-keygen -t ed25519 -C "你的邮箱"

    完成后,会在 ~/.ssh/ 目录里生成两个文件:

    • id_ed25519:私钥,不要给任何人
    • id_ed25519.pub:公钥,接下来要上传到 GitHub
    cat ~/.ssh/id_ed25519.pub

    打印公钥,复制内容并添加到GitHub设置中的SSH and GPG keys

    验证一下连接

    ssh -T git@github.com

    如果出现类似 Hi xxx! You've successfully authenticated 的提示,说明 SSH 已经配置好了。

下一节:软件安装相关#

安装Niri
https://laplacan.icu/posts/archlinux-guide/niri/
作者
LapLacan
发布于
2026-05-27
许可协议
CC BY-NC-SA 4.0