fcitx5 码表同步方案

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

本文介绍了作者使用fcitx5-android输入法时遇到的问题,即多份fcitx5实例导致多份码表文件,无法同步。作者采用了基于git模型的合并方案,选择一个已知同步的btrfs快照作为基准,定期更新到最近同步过的快照。作者使用了fcitx5-dictsync项目和fcitx5-tabledict编辑工具来实现码表的合并和加载。作者还分享了两台电脑和fcitx5-android的同步脚本。

🔎

延伸解读

基于快照的合并基准选择

作者选择已知同步的 btrfs 快照作为合并基准,这借鉴了 git 的三方合并模型。基准点确保双方码表的差异能正确识别,避免盲目覆盖导致新词丢失。定期更新基准到最近同步的快照,可以维持合并的准确性。这种方法适合多设备用户,但需要维护快照的同步状态。

码表编辑与重载的实用技巧

使用 libime_tabledict 将码表转为纯文本,再用 fcitx5-tabledict 编辑,避免了直接处理复杂二进制格式。重载时,作者通过 D-Bus 接口调用 SetConfig 方法,绕过了重启 fcitx5 可能崩溃的问题。在 Android 上则用 adb 强制停止应用来重载。这些技巧提高了操作可靠性,尤其适合桌面环境不稳定的情况。

Android 同步的特殊处理

与 Android 同步时,作者在脚本中添加了 vim 编辑步骤,因为 Android 上常自动生成奇怪的新词。同步后,通过 adb 推送文件并强制停止应用来重载。注意,新版 Android 可能限制访问应用目录,但作者尚未遇到。这提醒读者关注系统权限变化,及时调整同步策略。

❓

Q&A

fcitx5-android输入法的码表同步问题是什么?

多份fcitx5实例导致码表文件不同步,添加的词在其他实例中无法找到。

作者是如何解决码表不同步的问题的?

作者采用了基于git模型的合并方案,选择一个已知同步的btrfs快照作为基准进行合并。

在实现码表合并时使用了哪些工具?

使用了libime_tabledict命令和fcitx5-tabledict编辑工具。

如何避免fcitx5重启时崩溃的问题?

通过D-Bus接口重新加载码表,并在Android上使用adb重启应用。

fcitx5-dictsync项目的编程语言是什么?

该项目是用Rust编写的。

作者分享了哪些具体的操作步骤?

作者分享了两台电脑和fcitx5-android的同步脚本,包含具体的环境设置。

🏷️

标签

➡️

继续阅读