Skip to content
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

Closed
rico256-cn opened this issue Dec 21, 2022 · 13 comments
Closed

自编译到特定目录的的fcitx5无法切换输入法 #691

rico256-cn opened this issue Dec 21, 2022 · 13 comments

Comments

@rico256-cn
Copy link

rico256-cn commented Dec 21, 2022

因为工作关系需要做个精简的 os,所以我想打一个fcitx5的安装包,尽量不依赖其他的包,所以编译安装的时候,全部指定 prefix=/opt/fcitx5下了。

编译过程很顺利,编译后程序能正常启动。

桌面环境:debian 11 + xfce 4.16

但是发现如下问题:
在新的 os 下无法切换输入法,但是在之前装过 fcitx4的系统上,在 fcitx4停止的情况下可以工作的,主要体现在菜单这里的输入法用鼠标点也没法切换,也没有单选框:
image

目前排查发现:
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服务的依赖。

@wengxt
Copy link
Member

wengxt commented Dec 21, 2022

你需要 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
https://fcitx-im.org/wiki/Input_method_related_environment_variables#GTK_IM_MODULE

图标的问题,因为你装在 opt 却没有把他加到 XDG_DATA_DIRS 的环境中,所以你的托盘找不到图标,而你安装 fcitx-data 正好因为图标文件大部分路径名字能对上所以显示了图标

图标特别大的问题主要是 appindicator-gtk 的 bug,它在找不到小图标的时候不会对大图标进行缩放

@wengxt wengxt closed this as completed Dec 21, 2022
@rico256-cn
Copy link
Author

1) gtk-query-immodules-3.0 --updata-cache 我测试过,依旧没用,不过后面我放弃了,直接单独安装了 apt 里面的fcitx5-frontend-gtk3的包,也不管用,还是无法唤起输入法
2) XDG_DATA_DIRS 我在启动程序前 export XDG_DATA_DIRS=/opt/fcitx5/share:$ XDG_DATA_DIRS ,但是依旧没用。。。

我可以尝试重新编译一下,不使用指定路径(虽然这样打apt包可能略微麻烦点),但上面两个问题,能否进一步提供一些指引信息方便我排查问题,谢谢!

@rico256-cn
Copy link
Author

@wengxt 还请帮助一下,因为仓库里面的包依赖太多了,装个输入法可以就需要几百兆空间。

@hosiet
Copy link

hosiet commented Dec 22, 2022

@rico256-cn 作为 deb 包打包维护者,我想问问你觉得哪个依赖太大了?unicode-cldr-core 吗?

@rico256-cn
Copy link
Author

@hosiet 我最近在搞 os 裁剪,其实对于普通用户来说,几百兆的依赖并不算啥,但在我的场景里面,我需要搞一个几百兆的带 Xfce 基本桌面环境的 linux,apt 包里面最大的麻烦是 里面的包依赖特别混乱, 可能我安装一个包,会给我推一堆私货,而且完全用不上的,然后后面在删除某个包的时候,把其他的一堆包给干掉了导致系统挂了。

对于 fcitx5的包管理,看起来分类分的很清晰,但是从『产品』的角度来看,其实并不是特别优雅。

举个例子: 上面我说的 自己编译的fcitx5可以用 fcitx-data 这个包实现 icon 显示,但是 fcitx5-data 这个包是不可以的。。。因为两个包的 postinst 动作不一样。

然后下面这个,你看看依赖是不是很奇怪:
$apt install fcitx-data
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
将会同时安装下列软件:
bubblewrap ca-certificates dbus-x11 fcitx fcitx-bin fcitx-config-common fcitx-config-gtk fcitx-frontend-all fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5 fcitx-module-dbus
fcitx-module-kimpanel fcitx-module-lua fcitx-module-x11 fcitx-modules fcitx-ui-classic fcitx5-module-quickphrase-editor fuse gnome-desktop3-data gstreamer1.0-gl gstreamer1.0-libav
gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x i965-va-driver intel-media-va-driver iso-codes libaa1 libaom0 libass9 libatomic1 libavc1394-0
libavcodec58 libavfilter7 libavformat58 libavutil56 libblas3 libbs2b0 libcaca0 libcdparanoia0 libchromaprint1 libcodec2-0.9 libcurl3-gnutls libdav1d4 libdc1394-25 libdca0 libde265-0 libdv4
libdvdnav4 libdvdread8 libfaad2 libfcitx-config4 libfcitx-core0 libfcitx-gclient1 libfcitx-qt5-1 libfcitx-qt5-data libfcitx-utils0 libfftw3-double3 libflite1 libfluidsynth2 libgail-common
libgail18 libgettextpo0 libgfortran5 libgme0 libgnome-desktop-3-19 libgomp1 libgraphene-1.0-0 libgsm1 libgssdp-1.2-0 libgstreamer-gl1.0-0 libgstreamer-plugins-bad1.0-0
libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgupnp-1.2-0 libgupnp-igd-1.0-4 libharfbuzz-icu0 libhyphen0 libiec61883-0 libigdgmm11 libilmbase25
libinstpatch-1.0-2 libjack-jackd2-0 libjavascriptcoregtk-4.0-18 libkate1 liblapack3 liblilv-0-0 libltc11 liblua5.2-0 libmanette-0.2-0 libmfx1 libmjpegutils-2.1-0 libmms0 libmodplug1
libmp3lame0 libmpcdec6 libmpeg2encpp-2.1-0 libmpg123-0 libmplex2-2.1-0 libmysofa1 libnice10 libnorm1 libnspr4 libnss3 libnuma1 libofa0 libopenal-data libopenal1 libopenexr25 libopengl0
libopenjp2-7 libopenmpt0 libopenni2-0 liborc-0.4-0 libpgm-5.3-0 libpipewire-0.3-0 libpipewire-0.3-modules libpocketsphinx3 libpostproc55 libpresage-data libpresage1v5 libquadmath0 librabbitmq4
libraw1394-11 librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsbc1 libsdl2-2.0-0 libserd-0-0 libshine3 libshout3 libsnappy1v5 libsndio7.0 libsodium23 libsord-0-0 libsoundtouch1
libsoxr0 libspa-0.2-modules libspandsp2 libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libsrtp2-1 libssh-gcrypt-4 libswresample3 libswscale5 libtag1v5 libtag1v5-vanilla libtheora0
libtinyxml2.6.2v5 libtwolame0 libv4l-0 libv4lconvert0 libva-drm2 libva-x11-2 libva2 libvdpau-va-gl1 libvdpau1 libvidstab1.1 libvisual-0.4-0 libvo-aacenc0 libvo-amrwbenc0 libvorbisfile3 libvpx6
libwavpack1 libwebkit2gtk-4.0-37 libwebpdemux2 libwebpmux3 libwebrtc-audio-processing1 libwildmidi2 libwoff1 libwpe-1.0-1 libwpebackend-fdo-1.0-1 libx264-160 libx265-192 libxkbregistry0
libxslt1.1 libxss1 libxvidcore4 libzbar0 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers ocl-icd-libopencl1 openssl pipewire pipewire-bin pocketsphinx-en-us presage
timgm6mb-soundfont va-driver-all vdpau-driver-all xdg-dbus-proxy xdg-desktop-portal xdg-desktop-portal-gtk zenity zenity-common
建议安装:
fcitx-m17n fcitx-tools kdialog plasma-widgets-kimpanel frei0r-plugins i965-va-driver-shaders isoquery libdv-bin oss-compat libdvdcss2 libfftw3-bin libfftw3-dev libvisual-0.4-plugins
gstreamer1.0-tools jackd2 libportaudio2 libraw1394-doc librsvg2-bin xdg-utils serdi sndiod sordi speex gstreamer1.0-alsa libwildmidi-config opencl-icd fluid-soundfont-gm nvidia-vdpau-driver
nvidia-tesla-440-vdpau-driver nvidia-tesla-418-vdpau-driver nvidia-legacy-390xx-vdpau-driver nvidia-legacy-340xx-vdpau-driver accountsservice evince
下列【新】软件包将被安装:
bubblewrap ca-certificates dbus-x11 fcitx fcitx-bin fcitx-config-common fcitx-config-gtk fcitx-data fcitx-frontend-all fcitx-frontend-gtk2 fcitx-frontend-gtk3 fcitx-frontend-qt5
fcitx-module-dbus fcitx-module-kimpanel fcitx-module-lua fcitx-module-x11 fcitx-modules fcitx-ui-classic fcitx5-module-quickphrase-editor fuse gnome-desktop3-data gstreamer1.0-gl
gstreamer1.0-libav gstreamer1.0-plugins-bad gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-x i965-va-driver intel-media-va-driver iso-codes libaa1 libaom0 libass9 libatomic1
libavc1394-0 libavcodec58 libavfilter7 libavformat58 libavutil56 libblas3 libbs2b0 libcaca0 libcdparanoia0 libchromaprint1 libcodec2-0.9 libcurl3-gnutls libdav1d4 libdc1394-25 libdca0
libde265-0 libdv4 libdvdnav4 libdvdread8 libfaad2 libfcitx-config4 libfcitx-core0 libfcitx-gclient1 libfcitx-qt5-1 libfcitx-qt5-data libfcitx-utils0 libfftw3-double3 libflite1 libfluidsynth2
libgail-common libgail18 libgettextpo0 libgfortran5 libgme0 libgnome-desktop-3-19 libgomp1 libgraphene-1.0-0 libgsm1 libgssdp-1.2-0 libgstreamer-gl1.0-0 libgstreamer-plugins-bad1.0-0
libgstreamer-plugins-base1.0-0 libgstreamer1.0-0 libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libgupnp-1.2-0 libgupnp-igd-1.0-4 libharfbuzz-icu0 libhyphen0 libiec61883-0 libigdgmm11 libilmbase25
libinstpatch-1.0-2 libjack-jackd2-0 libjavascriptcoregtk-4.0-18 libkate1 liblapack3 liblilv-0-0 libltc11 liblua5.2-0 libmanette-0.2-0 libmfx1 libmjpegutils-2.1-0 libmms0 libmodplug1
libmp3lame0 libmpcdec6 libmpeg2encpp-2.1-0 libmpg123-0 libmplex2-2.1-0 libmysofa1 libnice10 libnorm1 libnspr4 libnss3 libnuma1 libofa0 libopenal-data libopenal1 libopenexr25 libopengl0
libopenjp2-7 libopenmpt0 libopenni2-0 liborc-0.4-0 libpgm-5.3-0 libpipewire-0.3-0 libpipewire-0.3-modules libpocketsphinx3 libpostproc55 libpresage-data libpresage1v5 libquadmath0 librabbitmq4
libraw1394-11 librsvg2-2 librsvg2-common librubberband2 libsamplerate0 libsbc1 libsdl2-2.0-0 libserd-0-0 libshine3 libshout3 libsnappy1v5 libsndio7.0 libsodium23 libsord-0-0 libsoundtouch1
libsoxr0 libspa-0.2-modules libspandsp2 libspeex1 libsphinxbase3 libsratom-0-0 libsrt1.4-gnutls libsrtp2-1 libssh-gcrypt-4 libswresample3 libswscale5 libtag1v5 libtag1v5-vanilla libtheora0
libtinyxml2.6.2v5 libtwolame0 libv4l-0 libv4lconvert0 libva-drm2 libva-x11-2 libva2 libvdpau-va-gl1 libvdpau1 libvidstab1.1 libvisual-0.4-0 libvo-aacenc0 libvo-amrwbenc0 libvorbisfile3 libvpx6
libwavpack1 libwebkit2gtk-4.0-37 libwebpdemux2 libwebpmux3 libwebrtc-audio-processing1 libwildmidi2 libwoff1 libwpe-1.0-1 libwpebackend-fdo-1.0-1 libx264-160 libx265-192 libxkbregistry0
libxslt1.1 libxss1 libxvidcore4 libzbar0 libzmq5 libzvbi-common libzvbi0 mesa-va-drivers mesa-vdpau-drivers ocl-icd-libopencl1 openssl pipewire pipewire-bin pocketsphinx-en-us presage
timgm6mb-soundfont va-driver-all vdpau-driver-all xdg-dbus-proxy xdg-desktop-portal xdg-desktop-portal-gtk zenity zenity-common
升级了 0 个软件包,新安装了 208 个软件包,要卸载 0 个软件包,有 23 个软件包未被升级。
需要下载 163 MB 的归档。
解压缩后会消耗 491 MB 的额外空间。
您希望继续执行吗? [Y/n] ^C

@rico256-cn
Copy link
Author

$apt install fcitx-data --no-install-recommends
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
建议安装:
fcitx
推荐安装:
fcitx-bin
下列【新】软件包将被安装:
fcitx-data
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 23 个软件包未被升级。
需要下载 201 kB 的归档。
解压缩后会消耗 904 kB 的额外空间。
获取:1 http://mirrors.aliyun.com/debian bullseye/main amd64 fcitx-data all 1:4.2.9.8-3 [201 kB]
已下载 201 kB,耗时 0秒 (678 kB/s)
正在选中未选择的软件包 fcitx-data。
(正在读取数据库 ... 系统当前共安装有 42922 个文件和目录。)
准备解压 .../fcitx-data_1%3a4.2.9.8-3_all.deb ...
正在解压 fcitx-data (1:4.2.9.8-3) ...
正在设置 fcitx-data (1:4.2.9.8-3) ...
正在处理用于 hicolor-icon-theme (0.17-2) 的触发器 ...
正在处理用于 shared-mime-info (2.0-1) 的触发器 ...
正在处理用于 desktop-file-utils (0.26-1) 的触发器 ... ( 这里和 fcitx5-data 的安装行为并不一致了)

$apt install fcitx5-data
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在读取状态信息... 完成
下列【新】软件包将被安装:
fcitx5-data
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 23 个软件包未被升级。
需要下载 1,389 kB 的归档。
解压缩后会消耗 5,543 kB 的额外空间。
获取:1 http://mirrors.aliyun.com/debian bullseye/main amd64 fcitx5-data all 5.0.5-1 [1,389 kB]
已下载 1,389 kB,耗时 2秒 (874 kB/s)
正在选中未选择的软件包 fcitx5-data。
(正在读取数据库 ... 系统当前共安装有 42844 个文件和目录。)
准备解压 .../fcitx5-data_5.0.5-1_all.deb ...
正在解压 fcitx5-data (5.0.5-1) ...
正在设置 fcitx5-data (5.0.5-1) ...

@hosiet
Copy link

hosiet commented Dec 22, 2022

感觉你把很多不同的问题混淆在一起了,我尝试对我还能看得明白的部分解释一下:

  • 首先是大前提:所有 fcitx4 相关的软件都已经进入生命周期的末期了,如果未来哪一天它们被彻底删除也不奇怪。请尽量不要再使用或依赖与 fcitx4 相关或者基于 fcitx4 的软件和软件包。
  • 然后是软件包命名问题:在 Debian / Ubuntu 中,现在所有以 fcitx- 开头的软件包都是 fcitx4 的一部分或者只应当用于 fcitx4,所有以 fcitx5 开头的软件包都是 fcitx5 的一部分或者只应当适用于 fcitx5。如果你正在打算自己编译 fcitx5 或者使用 fcitx5 或者裁剪系统以使用 fcitx5,那么系统上就不应当出现任何(注意,我说的是任何)以 fcitx- 开头的软件包!
  • 接上一条,你尝试安装 fcitx-data 来提供 fcitx5 的操作是完全不适当不合理的,能达到所谓“fcitx-data 提供 fcitx5 的图标”的效果纯属巧合。至于巧合到底为什么会出现,上面 wengxt 已经在 自编译到特定目录的的fcitx5无法切换输入法 #691 (comment) 的回复里明确告诉你了。巧合不代表理应如此,请务必不要再这么做。

然后讨论一下你认为的 fcitx5-datafcitx-data 行为不同的问题。根本原因是两个软件包提供的文件不同:由 https://packages.debian.org/sid/all/fcitx-data/filelist 可以看出,fcitx-data 会提供大部分的位于 /usr/share/icons/hicolor/ 的 fcitx 相关图标:

/usr/share/icons/hicolor/128x128/apps/fcitx.png
/usr/share/icons/hicolor/16x16/apps/fcitx-fullwidth-active.png
/usr/share/icons/hicolor/16x16/apps/fcitx-fullwidth-inactive.png
/usr/share/icons/hicolor/16x16/apps/fcitx-kbd.png
/usr/share/icons/hicolor/16x16/apps/fcitx-punc-active.png
/usr/share/icons/hicolor/16x16/apps/fcitx-punc-inactive.png
/usr/share/icons/hicolor/16x16/apps/fcitx-vk-active.png
/usr/share/icons/hicolor/16x16/apps/fcitx-vk-inactive.png
/usr/share/icons/hicolor/16x16/apps/fcitx.png
/usr/share/icons/hicolor/22x22/apps/fcitx-fullwidth-active.png
/usr/share/icons/hicolor/22x22/apps/fcitx-fullwidth-inactive.png
/usr/share/icons/hicolor/22x22/apps/fcitx-kbd.png
/usr/share/icons/hicolor/22x22/apps/fcitx-punc-active.png
/usr/share/icons/hicolor/22x22/apps/fcitx-punc-inactive.png
/usr/share/icons/hicolor/22x22/apps/fcitx-vk-active.png
/usr/share/icons/hicolor/22x22/apps/fcitx-vk-inactive.png
/usr/share/icons/hicolor/22x22/apps/fcitx.png
/usr/share/icons/hicolor/24x24/apps/fcitx-fullwidth-active.png
/usr/share/icons/hicolor/24x24/apps/fcitx-fullwidth-inactive.png
/usr/share/icons/hicolor/24x24/apps/fcitx-kbd.png
/usr/share/icons/hicolor/24x24/apps/fcitx-punc-active.png
/usr/share/icons/hicolor/24x24/apps/fcitx-punc-inactive.png
/usr/share/icons/hicolor/24x24/apps/fcitx-vk-active.png
/usr/share/icons/hicolor/24x24/apps/fcitx-vk-inactive.png
/usr/share/icons/hicolor/24x24/apps/fcitx.png
/usr/share/icons/hicolor/32x32/apps/fcitx.png
/usr/share/icons/hicolor/48x48/apps/fcitx-cangjie.png
/usr/share/icons/hicolor/48x48/apps/fcitx-chn.png
/usr/share/icons/hicolor/48x48/apps/fcitx-chttrans-active.png
/usr/share/icons/hicolor/48x48/apps/fcitx-chttrans-inactive.png
/usr/share/icons/hicolor/48x48/apps/fcitx-erbi.png
/usr/share/icons/hicolor/48x48/apps/fcitx-fullwidth-active.png
/usr/share/icons/hicolor/48x48/apps/fcitx-fullwidth-inactive.png
/usr/share/icons/hicolor/48x48/apps/fcitx-kbd.png
/usr/share/icons/hicolor/48x48/apps/fcitx-pinyin.png
/usr/share/icons/hicolor/48x48/apps/fcitx-punc-active.png
/usr/share/icons/hicolor/48x48/apps/fcitx-punc-inactive.png
/usr/share/icons/hicolor/48x48/apps/fcitx-remind-active.png
/usr/share/icons/hicolor/48x48/apps/fcitx-remind-inactive.png
/usr/share/icons/hicolor/48x48/apps/fcitx-shuangpin.png
/usr/share/icons/hicolor/48x48/apps/fcitx-vk-active.png
/usr/share/icons/hicolor/48x48/apps/fcitx-vk-inactive.png
/usr/share/icons/hicolor/48x48/apps/fcitx-wbpy.png
/usr/share/icons/hicolor/48x48/apps/fcitx-wubi.png
/usr/share/icons/hicolor/48x48/apps/fcitx-ziranma.png
/usr/share/icons/hicolor/48x48/apps/fcitx.png
/usr/share/icons/hicolor/scalable/apps/fcitx-fullwidth-active-symbolic.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-fullwidth-active.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-fullwidth-inactive-symbolic.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-fullwidth-inactive.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-kbd-symbolic.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-kbd.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-punc-active-symbolic.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-punc-active.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-punc-inactive-symbolic.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-punc-inactive.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-vk-active-symbolic.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-vk-active.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-vk-inactive-symbolic.svg
/usr/share/icons/hicolor/scalable/apps/fcitx-vk-inactive.svg
/usr/share/icons/hicolor/scalable/apps/fcitx.svg

然而从 https://packages.debian.org/sid/all/fcitx5-data/filelist 可以看出 fcitx5-data 并不会在这个包中提供位于 /usr/share/icons/hicolor/任何图标:

/usr/share/doc/fcitx5-data/changelog.Debian.gz
/usr/share/doc/fcitx5-data/copyright
/usr/share/fcitx5/default/ar_DZ
/usr/share/fcitx5/default/as_IN
/usr/share/fcitx5/default/ast_ES
/usr/share/fcitx5/default/az_AZ
/usr/share/fcitx5/default/be_BY
/usr/share/fcitx5/default/bg_BG
/usr/share/fcitx5/default/bn_IN
/usr/share/fcitx5/default/cat_ES
/usr/share/fcitx5/default/cs_CZ
/usr/share/fcitx5/default/de_CH
/usr/share/fcitx5/default/de_DE
/usr/share/fcitx5/default/el_CY
/usr/share/fcitx5/default/el_GR
/usr/share/fcitx5/default/en_GB
/usr/share/fcitx5/default/en_US
/usr/share/fcitx5/default/en_ZA
/usr/share/fcitx5/default/es_ES
/usr/share/fcitx5/default/es_GT
/usr/share/fcitx5/default/es_MX
/usr/share/fcitx5/default/fr_BE
/usr/share/fcitx5/default/fr_CH
/usr/share/fcitx5/default/fr_FR
/usr/share/fcitx5/default/gl_ES
/usr/share/fcitx5/default/gu_IN
/usr/share/fcitx5/default/he_IL
/usr/share/fcitx5/default/hi_IN
/usr/share/fcitx5/default/id_ID
/usr/share/fcitx5/default/it_IT
/usr/share/fcitx5/default/ja_JP
/usr/share/fcitx5/default/kn_IN
/usr/share/fcitx5/default/ko_KR
/usr/share/fcitx5/default/mai_IN
/usr/share/fcitx5/default/ml_IN
/usr/share/fcitx5/default/mr_IN
/usr/share/fcitx5/default/nl_NL
/usr/share/fcitx5/default/or_IN
/usr/share/fcitx5/default/pa_IN
/usr/share/fcitx5/default/pl_PL
/usr/share/fcitx5/default/pt_BR
/usr/share/fcitx5/default/pt_PT
/usr/share/fcitx5/default/ru_RU
/usr/share/fcitx5/default/sd_IN
/usr/share/fcitx5/default/sk_SK
/usr/share/fcitx5/default/ta_IN
/usr/share/fcitx5/default/te_IN
/usr/share/fcitx5/default/ur_IN
/usr/share/fcitx5/default/zh_CN
/usr/share/fcitx5/default/zh_HK
/usr/share/fcitx5/default/zh_TW
/usr/share/fcitx5/emoji/data/af.dict
/usr/share/fcitx5/emoji/data/am.dict
/usr/share/fcitx5/emoji/data/ar.dict
/usr/share/fcitx5/emoji/data/ar_SA.dict
/usr/share/fcitx5/emoji/data/as.dict
/usr/share/fcitx5/emoji/data/ast.dict
/usr/share/fcitx5/emoji/data/az.dict
/usr/share/fcitx5/emoji/data/be.dict
/usr/share/fcitx5/emoji/data/bg.dict
/usr/share/fcitx5/emoji/data/bn.dict
/usr/share/fcitx5/emoji/data/br.dict
/usr/share/fcitx5/emoji/data/bs.dict
/usr/share/fcitx5/emoji/data/ca.dict
/usr/share/fcitx5/emoji/data/ccp.dict
/usr/share/fcitx5/emoji/data/ceb.dict
/usr/share/fcitx5/emoji/data/chr.dict
/usr/share/fcitx5/emoji/data/ckb.dict
/usr/share/fcitx5/emoji/data/cs.dict
/usr/share/fcitx5/emoji/data/cy.dict
/usr/share/fcitx5/emoji/data/da.dict
/usr/share/fcitx5/emoji/data/de.dict
/usr/share/fcitx5/emoji/data/de_CH.dict
/usr/share/fcitx5/emoji/data/dsb.dict
/usr/share/fcitx5/emoji/data/el.dict
/usr/share/fcitx5/emoji/data/en.dict
/usr/share/fcitx5/emoji/data/en_001.dict
/usr/share/fcitx5/emoji/data/en_AU.dict
/usr/share/fcitx5/emoji/data/en_CA.dict
/usr/share/fcitx5/emoji/data/en_GB.dict
/usr/share/fcitx5/emoji/data/es.dict
/usr/share/fcitx5/emoji/data/es_419.dict
/usr/share/fcitx5/emoji/data/es_MX.dict
/usr/share/fcitx5/emoji/data/es_US.dict
/usr/share/fcitx5/emoji/data/et.dict
/usr/share/fcitx5/emoji/data/eu.dict
/usr/share/fcitx5/emoji/data/fa.dict
/usr/share/fcitx5/emoji/data/fi.dict
/usr/share/fcitx5/emoji/data/fil.dict
/usr/share/fcitx5/emoji/data/fo.dict
/usr/share/fcitx5/emoji/data/fr.dict
/usr/share/fcitx5/emoji/data/fr_CA.dict
/usr/share/fcitx5/emoji/data/ga.dict
/usr/share/fcitx5/emoji/data/gd.dict
/usr/share/fcitx5/emoji/data/gl.dict
/usr/share/fcitx5/emoji/data/gu.dict
/usr/share/fcitx5/emoji/data/ha.dict
/usr/share/fcitx5/emoji/data/he.dict
/usr/share/fcitx5/emoji/data/hi.dict
/usr/share/fcitx5/emoji/data/hi_Latn.dict
/usr/share/fcitx5/emoji/data/hr.dict
/usr/share/fcitx5/emoji/data/hsb.dict
/usr/share/fcitx5/emoji/data/hu.dict
/usr/share/fcitx5/emoji/data/hy.dict
/usr/share/fcitx5/emoji/data/ia.dict
/usr/share/fcitx5/emoji/data/id.dict
/usr/share/fcitx5/emoji/data/ig.dict
/usr/share/fcitx5/emoji/data/is.dict
/usr/share/fcitx5/emoji/data/it.dict
/usr/share/fcitx5/emoji/data/ja.dict
/usr/share/fcitx5/emoji/data/jv.dict
/usr/share/fcitx5/emoji/data/ka.dict
/usr/share/fcitx5/emoji/data/kab.dict
/usr/share/fcitx5/emoji/data/kk.dict
/usr/share/fcitx5/emoji/data/kl.dict
/usr/share/fcitx5/emoji/data/km.dict
/usr/share/fcitx5/emoji/data/kn.dict
/usr/share/fcitx5/emoji/data/ko.dict
/usr/share/fcitx5/emoji/data/kok.dict
/usr/share/fcitx5/emoji/data/ky.dict
/usr/share/fcitx5/emoji/data/lb.dict
/usr/share/fcitx5/emoji/data/lo.dict
/usr/share/fcitx5/emoji/data/lt.dict
/usr/share/fcitx5/emoji/data/lv.dict
/usr/share/fcitx5/emoji/data/mi.dict
/usr/share/fcitx5/emoji/data/mk.dict
/usr/share/fcitx5/emoji/data/ml.dict
/usr/share/fcitx5/emoji/data/mn.dict
/usr/share/fcitx5/emoji/data/mni.dict
/usr/share/fcitx5/emoji/data/mr.dict
/usr/share/fcitx5/emoji/data/ms.dict
/usr/share/fcitx5/emoji/data/mt.dict
/usr/share/fcitx5/emoji/data/my.dict
/usr/share/fcitx5/emoji/data/ne.dict
/usr/share/fcitx5/emoji/data/nl.dict
/usr/share/fcitx5/emoji/data/nn.dict
/usr/share/fcitx5/emoji/data/no.dict
/usr/share/fcitx5/emoji/data/or.dict
/usr/share/fcitx5/emoji/data/pa.dict
/usr/share/fcitx5/emoji/data/pa_Arab.dict
/usr/share/fcitx5/emoji/data/pcm.dict
/usr/share/fcitx5/emoji/data/pl.dict
/usr/share/fcitx5/emoji/data/ps.dict
/usr/share/fcitx5/emoji/data/pt.dict
/usr/share/fcitx5/emoji/data/pt_PT.dict
/usr/share/fcitx5/emoji/data/qu.dict
/usr/share/fcitx5/emoji/data/rm.dict
/usr/share/fcitx5/emoji/data/ro.dict
/usr/share/fcitx5/emoji/data/ru.dict
/usr/share/fcitx5/emoji/data/rw.dict
/usr/share/fcitx5/emoji/data/sc.dict
/usr/share/fcitx5/emoji/data/sd.dict
/usr/share/fcitx5/emoji/data/si.dict
/usr/share/fcitx5/emoji/data/sk.dict
/usr/share/fcitx5/emoji/data/sl.dict
/usr/share/fcitx5/emoji/data/so.dict
/usr/share/fcitx5/emoji/data/sq.dict
/usr/share/fcitx5/emoji/data/sr.dict
/usr/share/fcitx5/emoji/data/sr_Cyrl_BA.dict
/usr/share/fcitx5/emoji/data/sr_Latn.dict
/usr/share/fcitx5/emoji/data/sr_Latn_BA.dict
/usr/share/fcitx5/emoji/data/sv.dict
/usr/share/fcitx5/emoji/data/sw.dict
/usr/share/fcitx5/emoji/data/sw_KE.dict
/usr/share/fcitx5/emoji/data/ta.dict
/usr/share/fcitx5/emoji/data/te.dict
/usr/share/fcitx5/emoji/data/tg.dict
/usr/share/fcitx5/emoji/data/th.dict
/usr/share/fcitx5/emoji/data/ti.dict
/usr/share/fcitx5/emoji/data/tk.dict
/usr/share/fcitx5/emoji/data/to.dict
/usr/share/fcitx5/emoji/data/tr.dict
/usr/share/fcitx5/emoji/data/ug.dict
/usr/share/fcitx5/emoji/data/uk.dict
/usr/share/fcitx5/emoji/data/ur.dict
/usr/share/fcitx5/emoji/data/uz.dict
/usr/share/fcitx5/emoji/data/vi.dict
/usr/share/fcitx5/emoji/data/wo.dict
/usr/share/fcitx5/emoji/data/xh.dict
/usr/share/fcitx5/emoji/data/yo.dict
/usr/share/fcitx5/emoji/data/yo_BJ.dict
/usr/share/fcitx5/emoji/data/yue.dict
/usr/share/fcitx5/emoji/data/yue_Hans.dict
/usr/share/fcitx5/emoji/data/zh.dict
/usr/share/fcitx5/emoji/data/zh_Hant.dict
/usr/share/fcitx5/emoji/data/zh_Hant_HK.dict
/usr/share/fcitx5/emoji/data/zu.dict
/usr/share/fcitx5/spell/en_dict.fscd
/usr/share/fcitx5/themes/default/arrow.png
/usr/share/fcitx5/themes/default/highlight.png
/usr/share/fcitx5/themes/default/next.png
/usr/share/fcitx5/themes/default/panel.png
/usr/share/fcitx5/themes/default/prev.png
/usr/share/fcitx5/themes/default/radio.png
/usr/share/fcitx5/themes/default/theme.conf
/usr/share/fcitx5/unicode/charselectdata
/usr/share/locale/ca/LC_MESSAGES/fcitx5.mo
/usr/share/locale/da/LC_MESSAGES/fcitx5.mo
/usr/share/locale/de/LC_MESSAGES/fcitx5.mo
/usr/share/locale/es/LC_MESSAGES/fcitx5.mo
/usr/share/locale/fr/LC_MESSAGES/fcitx5.mo
/usr/share/locale/he/LC_MESSAGES/fcitx5.mo
/usr/share/locale/ja/LC_MESSAGES/fcitx5.mo
/usr/share/locale/ko/LC_MESSAGES/fcitx5.mo
/usr/share/locale/ru/LC_MESSAGES/fcitx5.mo
/usr/share/locale/vi/LC_MESSAGES/fcitx5.mo
/usr/share/locale/zh_CN/LC_MESSAGES/fcitx5.mo
/usr/share/locale/zh_TW/LC_MESSAGES/fcitx5.mo

^^^ 看这里,没有任何图标出现。

那么图标哪里去了呢?根据 https://packages.debian.org/sid/all/fcitx5/filelist 可以看到,fcitx 本体的图标位于 fcitx5 软件包中:

/usr/share/icons/hicolor/128x128/apps/fcitx.png
/usr/share/icons/hicolor/128x128/apps/org.fcitx.Fcitx5.png
/usr/share/icons/hicolor/16x16/apps/fcitx.png
/usr/share/icons/hicolor/16x16/apps/org.fcitx.Fcitx5.png
/usr/share/icons/hicolor/22x22/apps/fcitx.png
/usr/share/icons/hicolor/22x22/apps/org.fcitx.Fcitx5.png
/usr/share/icons/hicolor/24x24/apps/fcitx.png
/usr/share/icons/hicolor/24x24/apps/org.fcitx.Fcitx5.png
/usr/share/icons/hicolor/32x32/apps/fcitx.png
/usr/share/icons/hicolor/32x32/apps/org.fcitx.Fcitx5.png
/usr/share/icons/hicolor/48x48/apps/fcitx.png
/usr/share/icons/hicolor/48x48/apps/org.fcitx.Fcitx5.png
/usr/share/icons/hicolor/scalable/apps/fcitx.svg
/usr/share/icons/hicolor/scalable/apps/org.fcitx.Fcitx5.svg

这是2020年左右打包 fcitx5 系列软件时故意设计如此,原因则是在设计 fcitx5 拆包时避免了 fcitx4 旧时期图标和实际输入法不在同一个包中的问题,也就是对 fcitx5 来说,只有你的系统上安装了对应输入法(的软件包)才会安装对应图标,例如 fcitx-cangjie.png 原本在 fcitx4 时代位于 fcitx-data 包中,在 fcitx5 时代则和输入法本体(fcitx5-table)一起提供。图标和实际该图标对应的输入法放在一起,我认为比起 fcitx4 时代的图标单独成包是进步而非错误。


最后说一下你认为 fcitx-data 的依赖很奇怪的问题:首先结论是这并不奇怪,因为 fcitx-data 是 fcitx4 的一部分,打包时的设计使得系统认为你安装 fcitx-data 那么默认也需要 fcitx4 软件的本体,所以会在 --install-recommends 的时候把 fcitx-bin 也作为推荐安装的依赖带入,而安装 fcitx-bin 就会带入 fcitx4 的本体,导致你的需安装软件包列表一发不可收拾。但我们都知道你实际需要的只是 自己打包的 fcitx5 软件缺失的一些图标而非 fcitx4 本体,所以这和你的预期不符。


总结一下,根本上哪里出了错呢?根本上的错误是你尝试 使用 fcitx4 的软件包来提供 fcitx5 的功能(这里的功能指图标),这是没有必要的,也是实际操作中应当极力避免的。其次是你尝试自己编译 fcitx5 系列软件,这本身并不是问题,只要一切都用你编译安装的内容即可;但在图标缺失这个问题上应当首先研究编译安装时图标到底跑到了哪里且为什么没有被系统找到(正如 wengxt 在 #691 (comment) 指出的那样),而非在此时反而回到系统软件包中寻找可以用作替代品的文件:混合自行编译与系统原先打包的软件共同使用是大忌,也一直是问题的高发地带。最佳做法是要么全部打包,要么全部自行编译,不要做任何形式的混合。

@rico256-cn
Copy link
Author

@hosiet 谢谢你的解答, 我最终肯定不会混用 fcitx4的包的,因为我是尝试在安装了 fcitx4的 os 里面偶尔发现 fcitx5能工作,但新的 os 环境无法工作,所以我在尝试寻找差异。

图标 icon 这个问题:
1)我尝试把/opt/fcitx5/share/icons 里面的数据复制到/usr/share/icons/里面也不行
2)XDG_DATA_DIRS 里面增加/opt/fcitx5/share 在启动 fcitx5也不行。

gtk3的问题不知道你能否帮帮我?

@wengxt
Copy link
Member

wengxt commented Dec 22, 2022

你安装自定义路径,就需要做好系统软件包不通过一些手段就不认你自定义路径的情况

前面的 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 ,比你折腾这些可能要省事的多。

@rico256-cn
Copy link
Author

@wengxt 谢谢!我在研究一下。 我现在用的就是 debian 11,不过我现在需要裁剪系统盘空间,所以我只能自编译去掉依赖等问题并进一步裁剪 fcitx5里面不需要的一些文件,我会去掉 prefix 在重新编译一次,谢谢了!

@rico256-cn
Copy link
Author

rico256-cn commented Dec 27, 2022

@wengxt @hosiet 两位大佬好,冒昧在打搅一下。。。。

我现在编译的包是可以正常工作了,但发现编译出来的程序在拼音输入法候选词会有 方块:
image

比如这个候选字2,我保存到文本后 在终端打开显示 是:𧢹
image

百思不得其解,还请提供一下解决问题的思路。

版本信息:
drwxrwxr-x 12 root root 4096 12月 27 13:13 fcitx5-5.0.21
drwxrwxr-x 12 root root 4096 12月 27 13:25 fcitx5-chinese-addons-5.0.16
drwxrwxr-x 10 root root 4096 12月 27 13:14 fcitx5-gtk-5.0.21
drwxrwxr-x 9 root root 4096 12月 27 13:14 fcitx5-lua-5.0.10
drwxrwxr-x 11 root root 4096 12月 27 13:13 fcitx5-qt-5.0.16
drwxr-xr-x 3 root root 39 12月 27 13:16 kenlm-bcd4af619a2fa45f5876d8855f7876cc09f663af
drwxrwxr-x 8 root root 4096 12月 27 13:24 libime-1.0.16
drwxrwxr-x 8 root root 4096 12月 27 13:09 xcb-imdkit-1.0.4

主要的编译流程如下:

1)xcb-imdkit
cmake -DCMAKE_INSTALL_PREFIX=/usr .
make -j 5 && make install/strip

2)fcitx5
cmake -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_WAYLAND=ON -DENABLE_EMOJI=OFF .
make -j 5
make install/strip

3)fcitx5-qt
cmake -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_QT4=OFF .
make -j 5
make install/strip

4)fcitx5-gtk

cd fcitx5-gtk
cmake -DENABLE_GTK4_IM_MODULE=Off -DCMAKE_INSTALL_PREFIX=/usr .
make -j 5
make install/strip

5)fcitx5-lua (依赖 lua-dev)
cmake -DCMAKE_INSTALL_PREFIX=/usr .
make -j 5 && make install/strip

6)libime ,依赖kenlm 包 需要单独git clone 解压下去丢到 libime 的 kenlm 目录下
cmake -DCMAKE_INSTALL_PREFIX=/usr .
make -j 5
make install/strip

7)fcitx5-chinese-addon 依赖新版 libime,必须编译

cmake -DENABLE_OPENCC=Off -DCMAKE_INSTALL_PREFIX=/usr -DENABLE_CLOUDPINYIN=Off -DENABLE_BROWSER=Off .
make -j 5 && make install

8)fcitx5-config-tool
cd fcitx5-config-tool
mkdir build && cd build && cmake -DCMAKE_INSTALL_PREFIX=/usr ..
make && make install/strip

@rico256-cn
Copy link
Author

大致排除法确认了一下,在 apt 源装的 fcitx5基础上,覆盖了我编译的fcitx5-chinese-addons-5.0.16 版本后会重现这个问题。

@rico256-cn
Copy link
Author

rico256-cn commented Dec 27, 2022

应该可以确认是fcitx5-chinese-addons-5.0.16 的问题, 这个版本的拼音选词会多很多 方块候选字

进一步测试,5.0.10/5.0.14版本没有问题, 5.0.15开始引入的问题。 @wengxt

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants