hsingko


解决 calibre6+ 无法使用 Fcitx5 故障

之前手贱更新了 Calibre ,结果输入法又不能用了,之前的解决方法是拷贝 libFcitx5Qt5DBusAddons.so.1libfcitx5platforminputcontextplugin.so 这两个文件到 calibre 相应的库文件目录下,但是发现现在不管用了。当时懒得折腾,干脆用 calibre.el ,将 emacs 作为 calibre 的前端将就了;然而最近开始攒自己的 emacs 配置,不想安装不必要的插件,于是决定耐着性子看看要怎么解决,终于花费了半个多小时的时间,把 Fcitx5 鼓捣起来了。

废话少说,直接揭示谜底,为什么之前拷贝 .so 的方法不管用了?那是因为最近的 Calibre 更新到了 Qt6 ,如果还从 qt5 里面拷文件当然行不通了;然而从 qt6 目录拷贝也不行,为什么呢?因为 calibre 的 Qt 也不够新,如果运气不好,恰好卡在系统的 fcitx5-qt 插件库无法应用到 calibre 的旧版本框架这么一个尴尬的位置。比如我用的是 fedora37, fcitx5-qt 的版本是 5.0.16 ,里面的 .so 文件就没法应用在 calibre 里面。

那么怎么解决呢?简单来说,就是从网络上找历史版本的 fcitx5-qt 安装包,然后解压缩拷贝里面的 .so 文件,然后从里面一个个地找,看到底哪个历史版本可以让 calibre 成功调用。以我的例子, calibre 的版本是 6.9 ,那么可以下载 fcitx5-qt 5.0.11 ,fedora 包的下载地址是这里 。下载好之后可以用 rpm2cpio 软件进行解压,然后提取里面的两个文件:

  • libfcitx5platforminputcontextplugin.so, 拷贝到 /opt/calibre/plugins/platforminputcontexts 目录(这是直接从官网下载二进制包安装的目录,其他的安装方式可以有所不同,建议直接用 locate 查找)
  • libFcitx5Qt6DBusAddons.so.1, 拷贝到 /opt/calibre/lib, 这里可能要修改一下文件名,注意不要拷贝成链接文件

重启 Calibre, 大功告成!

不过我不太清楚 fedora 上的二进制文件在其他发行版的 Linux 上是否能用,保险起见可以去网络上找相应的历史镜像,唯一的区别是包的解压方式不同而已。