看不懂
咱可是根社区,不如着手解决这个问题
懂了,下次应用不能调输入法先自问两遍:
- 是不是Qt
- 是不是GTK
😂
linux不用tar差评
终于解决了,谢谢
deepin 20.9,官方应用商店安装的inkscape。
/etc/profile中添加了:
export GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules
export GTK_IM_MODULE=fcitx
然后在终端执行了:source /etc/profile
输入命令:env GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules GTK_IM_MODULE=fcitx /opt/apps/org.inkscape/files/bin/AppRun启动软件,然而还是不能输入汉字,问题出在哪儿?
deepin 20.9,官方应用商店安装的inkscape。
/etc/profile中添加了:
export GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules
export GTK_IM_MODULE=fcitx
然后在终端执行了:source /etc/profile
输入命令:env GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules GTK_IM_MODULE=fcitx /opt/apps/org.inkscape/files/bin/AppRun启动软件,然而还是不能输入汉字,问题出在哪儿?
在终端直接用env GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules GTK_IM_MODULE=fcitx /opt/apps/org.inkscape/files/bin/AppRun启动软件也输入不了汉字
在终端直接用env GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules GTK_IM_MODULE=fcitx /opt/apps/org.inkscape/files/bin/AppRun启动软件也输入不了汉字
加上GTK_IM_MODULE_FILE="/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache"
应该就好了。我用虚拟机跑了一下的确只用那两个不太行。
我把Inkscape的appimage解压,在AppRun文件开头加上
export GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules
export GTK_IM_MODULE_FILE="/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache"
export GTK_IM_MODULE=fcitx
重新打包appimage,终于可以正常输入中文了
加上GTK_IM_MODULE_FILE="/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache"
应该就好了。我用虚拟机跑了一下的确只用那两个不太行。
确实可以正常输入汉字了
Popular Events
More
一些AppImage包自带的GTK系列组件不会自带Fcitx之类的输入法模组。咱们CJK语言区人微言轻,上游大部分都no one care about us。
Qt系列的通过加载
/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts
里面的输入法插件调用系统输入法组件的说明,前人之述备矣。今天来备忘一下如何在GTK3系列应用中加载输入法插件。
大部分GTK3程序使用如下三个环境变量就可以成功使用输入法:
(文档地址:https://docs.gtk.org/gtk3/running.html)
对于Inkscape可以用:
env GTK_PATH=/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules GTK_IM_MODULE_FILE="/usr/lib/x86_64-linux-gnu/gtk-3.0/3.0.0/immodules.cache" GTK_IM_MODULE=fcitx /opt/apps/org.inkscape/files/bin/AppRun
这个命令行直接启动。但是对于V23事情有些变动,Inkscape的AppImage是在20.04上编译的,stdc++版本比v23的要低,恰恰V23自带的fcitx5 gtk3的模组是依赖最新版本stdc++。那只能去相同的环境自行编译了(恰好旁边有一个20.04的机器)。
编译过程
然后编辑一下fcitx5-gtk下的CMakeList.txt:
删除
包裹的所有部分,包括这个if和endif。(理论上把上面的options关掉就行,但是关掉还是需要gtk2的库,索性直接删掉~)
然后
最后在
build/gtk3
目录下躺着的im-fcitx5.so
文件就是我们需要的啦。找一个地方创建一个文件夹(比如说桌面,我的环境就是
/home/shiroko/Desktop/immodules
这个文件夹),然后把编译出来的im-fcitx5.so
丢进去,然后像这样加载:env GTK_IM_MODULE_FILE=/home/shiroko/Desktop/immodules.cache GTK_PATH=/home/shiroko/Desktop/immodules GTK_IM_MODULE=fcitx5 /opt/apps/org.inkscape/files/bin/AppRun
因为没有使用系统的immodules,所以需要手动创建一个cache文件
/home/shiroko/Desktop/immodules.cache
内容如下:
第一行即是我们的so文件的路径啦。
这样我们就能愉快的在V20和V23的GTK3 AppImage软件里面使用中文输入法啦!
(理论上适用于所有GTK3程序)
附带一个上文提到过的编译好的im-fcitx5.so:im-fcitx5.zip