在 WSLg 中运行 Obsidian 并使用雾凇拼音输入中文
在 WSL 原生 ext4 Vault 上运行 Linux Obsidian,并配置 Fcitx 5 + fcitx5-rime + 雾凇拼音中文输入。
[!info] related notes
- 前置笔记:
- 相关 MOC: obsidian-moc
- 相关资源: obsidian、wsl、rime-weasel
- 相关排障: WSLg Obsidian 中 Fcitx5 输入法快捷键失效与冲突排查
在 WSLg 中运行 Obsidian 并使用雾凇拼音输入中文
目标
让 Obsidian 真正运行在 WSLg 中,并直接编辑 WSL 原生文件系统上的 Vault;中文输入使用 Fcitx 5 + fcitx5-rime + 雾凇拼音,不再依赖 Windows 版 Obsidian 或 D: 盘工作树。
当前这套环境的目标结构是:
Windows
└─ WSL2 Ubuntu-24.04
├─ WSLg
│ └─ Linux Obsidian
├─ Fcitx 5
│ └─ fcitx5-rime
│ └─ 雾凇拼音 rime_ice
└─ /home/user/projects/thought-forest
├─ Git
├─ Obsidian
├─ Thought Forest KB MCP
└─ WSL Agent
关键原则:/home/user/projects/thought-forest 是 Source of Truth。Windows 侧旧的 D:\home\thought-forest 只应作为迁移期副本,不应再和 WSL 工作树并行写入。
安装 Linux Obsidian
Ubuntu 24.04 的精简 WSL 环境可能缺 Electron 运行库。相比 AppImage,官方 amd64 .deb 更适合让 APT 自动补齐依赖。
安装后确认:
command -v obsidian
# /usr/bin/obsidian
dpkg-query -W -f='${Version}\n' obsidian
新版 Obsidian 中,裸执行 /usr/bin/obsidian 可能被解释为 CLI 调用并提示:
Command line interface is not enabled. Please turn it on in Settings > General > Advanced.
因此日常启动更适合使用用户级 wrapper,通过 URI 把打开 Vault 的请求直接交给 Linux Obsidian。
[!warning]
obsidian://...是系统级 URI scheme。把它粘到 Windows 浏览器,会调用 Windows 注册的 Obsidian,而不是 WSLg 中的 Linux Obsidian。URI 应留在 WSL 内部处理。
配置 Fcitx 5
安装输入法框架、中文语言包和 CJK 字体:
sudo apt install \
fcitx5 \
fcitx5-frontend-gtk3 \
fcitx5-frontend-gtk4 \
fcitx5-config-qt \
language-pack-zh-hans \
fonts-noto-cjk \
dbus-x11
无需把整个开发环境的 LANG 改成中文。保留终端原有 locale,只给 GUI 应用注入输入法环境即可。
使用 Rime 与雾凇拼音
“小狼毫”是 Rime 的 Windows 前端;Linux / WSLg 上更自然的组合是:
Fcitx 5 → fcitx5-rime → librime → 雾凇拼音
安装 Rime 前端和 Lua 插件:
sudo apt install \
fcitx5-rime \
librime-bin \
librime-plugin-lua \
unzip
Ubuntu 24.04 可提供 librime 1.10.x 和 Lua 插件,能够部署当前雾凇拼音配置。
Fcitx5-Rime 的用户数据目录:
~/.local/share/fcitx5/rime/
将雾凇拼音官方 full.zip 解压到该目录,再执行:
rime_deployer --build \
~/.local/share/fcitx5/rime \
/usr/share/rime-data \
~/.local/share/fcitx5/rime/build
部署成功后应看到:
build/rime_ice.schema.yaml
build/rime_ice.prism.bin
build/rime_ice.reverse.bin
build/rime_ice.table.bin
主词典二进制通常达到几十 MB,说明大词库已经实际编译,而不只是复制 YAML。
配置 Fcitx 输入法组
~/.config/fcitx5/profile 保留 US 键盘和 Rime:
[Groups/0]
Name=Default
Default Layout=us
DefaultIM=rime
[Groups/0/Items/0]
Name=keyboard-us
Layout=
[Groups/0/Items/1]
Name=rime
Layout=
[GroupOrder]
0=Default
修改 profile 时要注意顺序:先停旧 Fcitx,再写配置,再重新启动。否则旧进程退出时可能把内存里的旧 profile 写回磁盘。
在 WSLg 中启动时使用:
fcitx5 -d --keep
--keep 用于在图形连接重建时尽量保持 Fcitx 进程存活。
给 Obsidian 注入输入法环境
Electron/GTK/XIM 场景至少准备:
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
export DefaultIMModule=fcitx
这些变量必须在 Obsidian 进程创建前存在,因此应放在 Obsidian wrapper 中。
当前本机的辅助入口:
~/.local/bin/fcitx5-wslg
~/.local/bin/wslg-fix-copy-mode
~/.local/bin/obsidian
obsidian wrapper 的职责是:
- 检查并修复 WSLg 图形通道;
- 保证 Fcitx5 常驻;
- 注入输入法环境;
- 启动
/opt/Obsidian/obsidian; - 用 URI 打开
/home/user/projects/thought-forest; - 必要时让 Windows 前置 WSLg 窗口。
Windows 开始菜单中的 Obsidian (Ubuntu-24.04) 也应指向这个 wrapper,而不是直接执行 /opt/Obsidian/obsidian,否则会绕过输入法初始化逻辑。
使用与验证
当前 Windows + WSLg 环境中,Ctrl+Space 会先被 Windows 输入法消费,因此不要再把它作为 Fcitx5 的切换键。当前约定为:
Ctrl + ; → Fcitx 中英文切换
Ctrl + Shift + ; → Fcitx Clipboard
Win + V → Windows Clipboard
Fcitx5 的切换键配置使用独立 section:
# ~/.config/fcitx5/config
[Hotkey/TriggerKeys]
0=Control+semicolon
Fcitx Clipboard 应移开 Ctrl+;,避免与输入法切换抢键:
# ~/.config/fcitx5/conf/clipboard.conf
PastePrimaryKey=
TriggerKey=Control+Shift+semicolon
修改后建议完整重启 Fcitx5,而不是只依赖 reload:
fcitx5 -e
fcitx5 -d --keep
在 Obsidian 编辑区按 Ctrl+; 激活 Fcitx / Rime,然后输入:
nihao
应出现“你好”等候选词;再次按 Ctrl+; 后应切回 keyboard-us,此时输入 nihao 应直接得到英文字符。
如果 Ctrl+Space 切的是 Windows 输入法、Ctrl+; 弹出 Fcitx Clipboard,或者强制进入 Rime 后不能用快捷键切回英文,见 WSLg Obsidian 中 Fcitx5 输入法快捷键失效与冲突排查。
雾凇默认还支持用左 Shift 在 Rime 会话内切换中英文;方案选单通常可用 F4 或 Ctrl+` 打开。
基础检查:
fcitx5-remote --check
fcitx5-remote
fcitx5-remote -n
cat ~/.config/fcitx5/profile
cat ~/.config/fcitx5/config
cat ~/.config/fcitx5/conf/clipboard.conf
fcitx5-diagnose | grep -A5 -B5 'Rime'
ls -lh ~/.local/share/fcitx5/rime/build/rime_ice.*
cd /home/user/projects/thought-forest && git status --short
[!note] Rime、雾凇词库和 Fcitx5 已经在本机完成部署;Obsidian 内最终候选框、中文上屏和中英文双向切换都应以实际物理键盘输入作为最后验收。
常见问题
任务栏有企鹅,但 Obsidian 窗口是灰色空壳
如果标题带 [WARN:COPY MODE],且窗口无法正常渲染,优先检查 WSLg 的共享内存图形重定向。见 [[wslg-copy-mode-blank-window|WSLg [WARN:COPY MODE] 空白窗口排查]]。
Ctrl+Space 切 Windows 输入法,或 Ctrl+; 弹出 Clipboard
这是宿主 Windows 快捷键与 Fcitx 内部模块热键叠加的问题,不等于 Rime 或 Electron 已损坏。优先按 WSLg Obsidian 中 Fcitx5 输入法快捷键失效与冲突排查 的顺序检查:Windows 是否截获、Fcitx 是否能 1 ↔ 2、Clipboard 是否抢键、[Hotkey/TriggerKeys] section 是否正确,以及修改后是否完整重启 Fcitx。
启动命令只打印 URI
Processed URI obsidian://... 表示 URI 已被 Linux Obsidian 接收,不代表需要把它复制到浏览器。
Obsidian Git 启动后把仓库改脏
Linux 下 obsidian-git 可能需要把 obsidian_askpass.sh 设成可执行。如果 diff 只有:
old mode 100644
new mode 100755
这是 Linux 执行权限的合理变化,可以把该权限位正式纳入 Git。