Flatpak Fcitx5 实验接入

Fcitx5 官方 Flatpak org.fcitx.Fcitx5 支持 org.fcitx.Fcitx5.Addon.* 扩展。 VoCoType 现在提供初步的扩展构建方案,不需要更换已有的 Flatpak Fcitx5。 还没有在真实 KDE neon + Flatpak Fcitx5 中完成端到端验证。

结构

试用步骤

需要安装 Flatpak、flatpak-builder 和 Fcitx5 对应的 KDE SDK。上游当前使用 org.kde.Sdk//6.11;若上游更改 SDK,需调整 packaging/flatpak 中的 manifest。

  1. 在宿主机安装原生 Core、录音器和模型,不安装宿主 Fcitx addon:

~~~bash bash scripts/install/common/install-native-user.sh --framework flatpak-fcitx5 --download-models systemctl --user status vocotype-flatpak-backend.service ~~~

  1. 构建并安装 Flatpak 扩展:

~~~bash flatpak install flathub org.fcitx.Fcitx5 flatpak install flathub org.kde.Sdk//6.11 bash packaging/flatpak/build-extension.sh --install ~~~

扩展名为 org.fcitx.Fcitx5.Addon.VocoType,构建使用本地源码。

  1. 只有在理解权限影响并确认信任整个 Fcitx5 Flatpak 及其他 addon之后,显式授予宿主机执行权限:

~~~bash bash packaging/flatpak/enable-host-bridge.sh --accept-host-spawn ~~~

脚本只挂载 xdg-run/vocotype-flatpak 运行时目录,不需要完整的 home、/tmp、宿主根目录或 system bus 权限。 但授予 org.freedesktop.Flatpak D-Bus 权限可以让 Flatpak 内任意代码执行宿主机命令(不限于 VoCoType 的两个桥接脚本),风险较高,不能视为细粒度授权。

  1. 完全退出并重新启动 Flatpak Fcitx5,然后在输入框中测试 F9。

仅执行 Fcitx5 的普通重载可能无法重新挂载刚安装的扩展。

诊断

~~~bash flatpak info org.fcitx.Fcitx5 flatpak --user info org.fcitx.Fcitx5.Addon.VocoType flatpak info --show-permissions org.fcitx.Fcitx5 systemctl --user status vocotype-flatpak-backend.service journalctl --user -u vocotype-flatpak-backend.service -b --no-pager flatpak run --command=sh org.fcitx.Fcitx5 -c 'ls /app/addons/VocoType/lib/fcitx5; printenv VOCOTYPE_FCITX5_SOCKET' ~~~

移除

~~~bash flatpak --user uninstall org.fcitx.Fcitx5.Addon.VocoType bash scripts/install/common/uninstall-native-user.sh --framework flatpak-fcitx5 ~~~

手动使用 flatpak override --user --show org.fcitx.Fcitx5 检查并逐项撤销附加权限。 不要直接执行 flatpak override --user --reset,因为那会移除该应用的全部用户覆盖设置。

尚未验证的部分

这是实验性实现,不是已发布的正式 Flatpak 安装包。