安装 Niri 与 Noctalia

本文教你从零搭建 Niri(滚动平铺 Wayland 合成器)+ Noctalia(桌面 shell)环境:字体、dotfiles 同步、核心软件、多显示器配置、fcitx5 中文输入法。全部命令在 Arch Linux 下验证。

安装字体

sudo pacman -S \
  ttf-jetbrains-mono-nerd \
  noto-fonts \
  noto-fonts-cjk \
  noto-fonts-emoji \
  ttf-nerd-fonts-symbols-mono
  • ttf-jetbrains-mono-nerd — 终端等宽字体(含 Nerd Fonts 图标)
  • noto-fonts / noto-fonts-cjk / noto-fonts-emoji — 外文、中日韩、emoji 字体

同步 dotfiles

先安装 GNU Stow(dotfiles 符号链接管理工具):

sudo pacman -S stow

克隆 dotfiles 仓库并应用:

git clone https://github.com/heihei0299/dotfiles.git ~/dotfiles
cd ~/dotfiles
rm README.md
stow *

stow * 会把仓库里每个包目录分别符号链接到 $HOME 对应位置。rm README.md 是因为 README 不在任何包目录里,stow 会报错。

安装 Niri、Noctalia 与核心软件

sudo pacman -Syu niri xwayland-satellite xdg-desktop-portal-gnome \
  xdg-desktop-portal-gtk matugen cava qt6-multimedia-ffmpeg nautilus
sudo pacman -S noctalia-git noctalia-greeter-git kitty nvim

niri 是滚动平铺 Wayland 合成器;noctalia-git(AUR)是基于 quickshell 的桌面 shell;kitty 终端、nvim 编辑器。

Zsh 依赖软件

根据 ~/.zshrc,zsh 配置依赖以下包。按需选择安装方式——zinit 可从 GitHub Releases 自动安装部分工具(无需 pacman),但系统级安装更稳定:

# 核心依赖(zsh + zinit 运行所需)
sudo pacman -S --needed zsh git curl unzip

# 系统命令(别名/函数引用,必须系统安装)
sudo pacman -S --needed \
  zoxide kitty neovim trash-cli tldr unar \
  bpytop procps-ng gnome-text-editor

# 可选:也可通过 zinit 自动安装(二选一即可)
sudo pacman -S --needed \
  fzf eza bat ripgrep fd fastfetch duf
  • zsh — Shell 本体
  • git — 克隆 zinit 插件管理器(.zshrc 自动安装 zinit)
  • curl / unzip — zinit 下载和解压工具
  • zoxide — 智能目录跳转(zoxide init zsh --cmd cd
  • kitty — 终端模拟器(别名 k
  • neovim — 编辑器(别名 nv
  • trash-cli — 安全删除(别名 rm
  • tldr — 简版 man 手册(别名 man
  • unar — 解压工具(别名 x
  • bpytop — 资源监视器(别名 top
  • procps-ng — 提供 ps / watch 命令
  • gnome-text-editor — GUI 编辑器(别名 gedit
  • fzf — 模糊搜索(fzf-tab、Ctrl+R 依赖)
  • ezals 替代(别名 ls/ll/la/tree
  • batcat 替代(别名 cat
  • ripgrep — 递归内容搜索
  • fdfind 替代
  • fastfetch — 系统信息(别名 ff
  • duf — 磁盘使用率(别名 df

显示器配置

参考 niri wiki: Configuration: Outputs

获取显示器信息

可选:用 wdisplays 临时调整显示设置:

sudo pacman -S wdisplays

运行命令获取显示器信息:

niri msg outputs
Output "BOE NE156QHM-NY1 Unknown" (eDP-1)
  Current mode: 2560x1440 @ 165.000 Hz (preferred)
  ...
Output "Shenzhen KTC Technology Group H27T22C 0x00000001" (DP-2)
  Current mode: 2560x1440 @ 180.000 Hz
  ...

记住 eDP-1DP-2 这类名称,在 Available modes 里找到需要的模式,格式为 分辨率@刷新率

编写 output 配置

在 niri 配置文件中搜索 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 在最左上角(2560x1440,1.33 缩放),横向像素为 2560/1.33 ≈ 1925。把 DP-2 放在它右边:

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

想放下面改 y 轴;设置旋转时横竖值也要对应旋转。

安装中文输入法 fcitx5

安装基础框架

sudo pacman -S fcitx5-im

fcitx5-im 包含 fcitx5 的基本包。

安装输入方案

可以自己选择输入方案。全拼推荐 RIME + 雾凇拼音:

  • 中文输入合集 fcitx5-chinese-addons:包含所有常用方案(拼音、五笔、双拼等),安装简单但输入效果一般,不推荐。

    sudo pacman -S fcitx5-chinese-addons
    
  • RIME 中州韵引擎 + 雾凇拼音(推荐全拼用户):两大主流方案中,雾凇全拼分词效果好,万象适合双拼。

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

    fcitx5-rime 是输入法引擎;rime-ice-git 雾凇输入方案,需要从 AUR 或 archlinuxcn 安装。 其他方案:rime-wanxiang-pinyin 万象拼音、rime-wanxiang-flypy 万象小鹤双拼(archlinuxcn 源)、fcitx5-mozc 日语、rime-wubi 五笔。

添加 RIME 到输入法列表

打开 fcitx5-configtool,把 rime(中州韵) 添加到输入法列表。重启输入法后,Ctrl+空格 切换到 RIME 会自动初始化。默认方案是繁体的 明月拼音,按 F4 可打开设置菜单临时调整为简体。

配置默认方案为雾凇拼音

编辑 RIME 用户配置(rime-ice 的 schema id 为 rime_ice):

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

写入:

patch:
  schema_list:
    - schema: rime_ice

重新部署(右键托盘 RIME 图标 → 重新部署,或重启输入法)后,默认方案即为雾凇拼音。参考 rime-ice 仓库

验证输入法

# 确认 fcitx5 进程运行
pgrep -a fcitx5

# 任意输入框按 Ctrl+空格 切换输入法
# 输入 "shurufa" 应出现 "输入法" 候选

验证与自查

  1. niri msg outputs 输出的分辨率/缩放与配置文件一致
  2. 两个显示器位置关系正确(鼠标可跨屏移动)
  3. Ctrl+空格 可切换中英文输入,候选词正常
  4. fastfetch 正常显示系统信息(dotfiles 生效)

参考