-
Notifications
You must be signed in to change notification settings - Fork 118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
自编译到特定目录的的fcitx5无法切换输入法 #691
Comments
你需要 im module 安装到对应的地方,fcitx5 也可以兼容 fcitx4 的 im module,所以如果你安装了 fcitx-frontend-{qt5,gtk{2,3}} 那确实可以输入,但并不是必须。你可以安装 fcitx5 的 im module 如果要自己安装那就需要路径能被系统的 gtk 和 qt 找到,qt的比较方便,装到对应的路径就可以用,gtk 还必须执行一个命令更新一个文件的内容 gtk-query-immodules-3.0 --updata-cache https://fcitx-im.org/wiki/Compiling_fcitx5#fcitx5-gtk 图标的问题,因为你装在 opt 却没有把他加到 XDG_DATA_DIRS 的环境中,所以你的托盘找不到图标,而你安装 fcitx-data 正好因为图标文件大部分路径名字能对上所以显示了图标 图标特别大的问题主要是 appindicator-gtk 的 bug,它在找不到小图标的时候不会对大图标进行缩放 |
1) gtk-query-immodules-3.0 --updata-cache 我测试过,依旧没用,不过后面我放弃了,直接单独安装了 apt 里面的fcitx5-frontend-gtk3的包,也不管用,还是无法唤起输入法 我可以尝试重新编译一下,不使用指定路径(虽然这样打apt包可能略微麻烦点),但上面两个问题,能否进一步提供一些指引信息方便我排查问题,谢谢! |
@wengxt 还请帮助一下,因为仓库里面的包依赖太多了,装个输入法可以就需要几百兆空间。 |
@rico256-cn 作为 deb 包打包维护者,我想问问你觉得哪个依赖太大了?unicode-cldr-core 吗? |
@hosiet 我最近在搞 os 裁剪,其实对于普通用户来说,几百兆的依赖并不算啥,但在我的场景里面,我需要搞一个几百兆的带 Xfce 基本桌面环境的 linux,apt 包里面最大的麻烦是 里面的包依赖特别混乱, 可能我安装一个包,会给我推一堆私货,而且完全用不上的,然后后面在删除某个包的时候,把其他的一堆包给干掉了导致系统挂了。 对于 fcitx5的包管理,看起来分类分的很清晰,但是从『产品』的角度来看,其实并不是特别优雅。 举个例子: 上面我说的 自己编译的fcitx5可以用 fcitx-data 这个包实现 icon 显示,但是 fcitx5-data 这个包是不可以的。。。因为两个包的 postinst 动作不一样。 然后下面这个,你看看依赖是不是很奇怪: |
$apt install fcitx-data --no-install-recommends $apt install fcitx5-data |
感觉你把很多不同的问题混淆在一起了,我尝试对我还能看得明白的部分解释一下:
然后讨论一下你认为的
然而从 https://packages.debian.org/sid/all/fcitx5-data/filelist 可以看出
^^^ 看这里,没有任何图标出现。 那么图标哪里去了呢?根据 https://packages.debian.org/sid/all/fcitx5/filelist 可以看到,fcitx 本体的图标位于
这是2020年左右打包 fcitx5 系列软件时故意设计如此,原因则是在设计 fcitx5 拆包时避免了 fcitx4 旧时期图标和实际输入法不在同一个包中的问题,也就是对 fcitx5 来说,只有你的系统上安装了对应输入法(的软件包)才会安装对应图标,例如 最后说一下你认为 总结一下,根本上哪里出了错呢?根本上的错误是你尝试 使用 fcitx4 的软件包来提供 fcitx5 的功能(这里的功能指图标),这是没有必要的,也是实际操作中应当极力避免的。其次是你尝试自己编译 fcitx5 系列软件,这本身并不是问题,只要一切都用你编译安装的内容即可;但在图标缺失这个问题上应当首先研究编译安装时图标到底跑到了哪里且为什么没有被系统找到(正如 wengxt 在 #691 (comment) 指出的那样),而非在此时反而回到系统软件包中寻找可以用作替代品的文件:混合自行编译与系统原先打包的软件共同使用是大忌,也一直是问题的高发地带。最佳做法是要么全部打包,要么全部自行编译,不要做任何形式的混合。 |
@hosiet 谢谢你的解答, 我最终肯定不会混用 fcitx4的包的,因为我是尝试在安装了 fcitx4的 os 里面偶尔发现 fcitx5能工作,但新的 os 环境无法工作,所以我在尝试寻找差异。 图标 icon 这个问题: gtk3的问题不知道你能否帮帮我? |
你安装自定义路径,就需要做好系统软件包不通过一些手段就不认你自定义路径的情况 前面的 XDG_DATA_DIRS 找图标需要给你的面板设置,而不是 fcitx gtk-query-immodules-3.0 则需要在执行前设置 GTK_PATH 找对应的你在 /opt 下面的文件,这个在前面的一个 wiki 页里已经说了。 QT 的如果没有安装的系统的,则需要设置 QT_PLUGINS_PATH 才能找到 而在保证能找到的前提下,还像正常使用一样,需要设置 GTK_IM_MODULE QT_IM_MODULE XMODIFIERS 这些环境变量 另外给你一个建议,与其你研究半天装 /opt 怎么才能工作,不如直接升级 debian 到有最新 fcitx5 的版本,或者,如果你非要用老版本的 debian,那就抓 debian 的打包脚本来 dpkg-buildpackage ,比你折腾这些可能要省事的多。 |
@wengxt 谢谢!我在研究一下。 我现在用的就是 debian 11,不过我现在需要裁剪系统盘空间,所以我只能自编译去掉依赖等问题并进一步裁剪 fcitx5里面不需要的一些文件,我会去掉 prefix 在重新编译一次,谢谢了! |
@wengxt @hosiet 两位大佬好,冒昧在打搅一下。。。。 我现在编译的包是可以正常工作了,但发现编译出来的程序在拼音输入法候选词会有 方块: 比如这个候选字2,我保存到文本后 在终端打开显示 是:𧢹 百思不得其解,还请提供一下解决问题的思路。 版本信息: 主要的编译流程如下: 1)xcb-imdkit 2)fcitx5 3)fcitx5-qt 4)fcitx5-gtk cd fcitx5-gtk 5)fcitx5-lua (依赖 lua-dev) 6)libime ,依赖kenlm 包 需要单独git clone 解压下去丢到 libime 的 kenlm 目录下 7)fcitx5-chinese-addon 依赖新版 libime,必须编译 cmake -DENABLE_OPENCC=Off -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_CLOUDPINYIN=Off -DENABLE_BROWSER=Off . 8)fcitx5-config-tool |
大致排除法确认了一下,在 apt 源装的 fcitx5基础上,覆盖了我编译的fcitx5-chinese-addons-5.0.16 版本后会重现这个问题。 |
应该可以确认是fcitx5-chinese-addons-5.0.16 的问题, 这个版本的拼音选词会多很多 方块候选字 进一步测试,5.0.10/5.0.14版本没有问题, 5.0.15开始引入的问题。 @wengxt |
因为工作关系需要做个精简的 os,所以我想打一个fcitx5的安装包,尽量不依赖其他的包,所以编译安装的时候,全部指定 prefix=/opt/fcitx5下了。
编译过程很顺利,编译后程序能正常启动。
桌面环境:debian 11 + xfce 4.16
但是发现如下问题:
在新的 os 下无法切换输入法,但是在之前装过 fcitx4的系统上,在 fcitx4停止的情况下可以工作的,主要体现在菜单这里的输入法用鼠标点也没法切换,也没有单选框:
目前排查发现:
1)fcitx-data 包装了之后能出现 icon(也就是说自己编译安装的程序 可能存在写死路径读取 icon 图标信息问题,暂时没看到有配置项)
2)通过排除删除法,发现 fcitx5程序至少和下面的某个包有一定关系,下面的包删除某个后,fcitx5就会再次不可切换输入法
ii fcitx-bin 1:4.2.9.8-3 amd64 Flexible Input Method Framework - essential binaries
ii fcitx-data 1:4.2.9.8-3 all Flexible Input Method Framework - essential data files
ii fcitx-module-dbus 1:4.2.9.8-3 amd64 Flexible Input Method Framework - D-Bus module and IPC frontend
ii fcitx-modules 1:4.2.9.8-3 amd64 Flexible Input Method Framework - core modules
ii libfcitx-config4:amd64 1:4.2.9.8-3 amd64 Flexible Input Method Framework - configuration support library
ii libfcitx-core0:amd64 1:4.2.9.8-3 amd64 Flexible Input Method Framework - library of core functions
ii libfcitx-utils0:amd64 1:4.2.9.8-3 amd64 Flexible Input Method Framework - utility support library
请教 fcitx5的输入法切换流程和逻辑是怎么样的,具体是和什么服务有关系? 我应该怎么样解决和去掉对 fcitx4服务的依赖。
The text was updated successfully, but these errors were encountered: