Inkscape 源码或源码打传统的deb包,都可以正常输入
Inkscape 源码或源码打传统的deb包,都可以正常输入
那是因为编译环境里有fcitx输入法插件(即先决条件第二条)。方便的话把源码编译打包的deb共享下。
同样的环境下,做成 Appimage 就无法输入了,或者说至少现在我还做不到让它正常输入,不光这个软件,好多都是,打成UOS的格式经常性的翻译失效,所以我打的包,一般都是传统的deb包
只有UOS和乌班的deb包,我现在没有装deepin。
同样的环境下,做成 Appimage 就无法输入了,或者说至少现在我还做不到让它正常输入,不光这个软件,好多都是,打成UOS的格式经常性的翻译失效,所以我打的包,一般都是传统的deb包
只有UOS和乌班的deb包,我现在没有装deepin。
UOS和deepin应该可以等效。
关于Appimage包输入中文失效问题,可以参考KeepassXC里面对于输入法插件的处理方式,在启动的sh文件里面临时定义变量,加载so文件,好像就是调试模式一样(我不是专门搞编程的,只能理解成这样,以前Qt写的程序加载不了指定so文件,qtconfig失效的时候,我也是这么干的)。这个软件原来的Appimage包也输入不了中文,原因就是没放fcitx插件,放了以后没有问题。
翻译失效问题我也遇到了,还没找到解决办法,有方案了共享一下。
UOS和deepin应该可以等效。
关于Appimage包输入中文失效问题,可以参考KeepassXC里面对于输入法插件的处理方式,在启动的sh文件里面临时定义变量,加载so文件,好像就是调试模式一样(我不是专门搞编程的,只能理解成这样,以前Qt写的程序加载不了指定so文件,qtconfig失效的时候,我也是这么干的)。这个软件原来的Appimage包也输入不了中文,原因就是没放fcitx插件,放了以后没有问题。
翻译失效问题我也遇到了,还没找到解决办法,有方案了共享一下。
UOS 和 DEEPIN 依赖有很大的不同,可互用的不多
依赖确实是个大问题,deepin20.9里的太老了,昨天装个软件找不到依赖,网上找了个ubuntu的强行装上把系统搞崩了,还好涉及的文件不多,用live抢救回来了。
appimage虽然可以隔离运行,但是不能安装,没有软件源统一升级,体验太差了。
要是可以实现优先调用软件所在目录的库文件,找不到的时候再找系统目录的就好了。好像Windows就是这么定义查找顺序的。
libfcitxplatforminputcontextplugin.so这个库其实是fcitx带的,而且有这个包"fcitx-frontend-qt5",只是不清楚为什么v23上没有被自动依赖
一般qt的plugins和样式、框架有关,像fcitx这种很明显涉及第三方库的大概率不会是qt产出的
像libfcitxplatforminputcontextplugin.so这种qt plugins库其实不太建议随便暴力放置在该归属的目录里,因为如果Qt的主版本号变动过大,有可能这个库就存在不兼容的情况了,不过好在v23和20.9均属于5.15体系,像UOS那种基于5.11如果把5.15环境下的qt plugins库强行单独拉走,就可能会有plugins兼容问题导致加载失败
大家好,我在ubuntu上用dockerfile制作debian镜像,上面安装了qt环境的各个包,但是输入不了中文。dockerfile里fcitx5和fcitx5-chinese-addon但是没有用,容器内fcitx5根本没启动,提示Failed to create addon: dbus Failed to connect to session dbus。按照网上的方法应该没有生效。以下是我的dockerfile,麻烦大佬们帮忙看看是什么问题。
FROM debian:stable
# 合并apt命令,设置Locale和中文语言包,同时清理
RUN apt-get update && \
apt-get upgrade -y && \
apt-get install -y \
locales \
apt-utils \
cmake \
g++ \
gcc \
qtdeclarative5-dev \
qtbase5-dev \
qttools5-dev \
qtmultimedia5-dev \
libqt5svg5-dev \
libqt5charts5-dev \
libqt5sql5-psql \
libqt5serialbus5-dev \
libqt5serialbus5-plugins \
libqt5websockets5-dev \
libqt5quickcontrols2-5 \
libqt5multimedia5 \
libqt5multimedia5-plugins \
qml-module-qtquick-controls2 \
qml-module-qtquick2 \
qml-module-qtmultimedia \
qml-module-qtgraphicaleffects \
qml-module-qtcharts \
qml-module-qtgstreamer \
gstreamer1.0-libav \
libgstrtspserver-1.0-dev \
libpq5 \
libpqxx-dev \
libavcodec-dev \
libavutil-dev \
libswscale-dev \
xcb \
x11-xserver-utils \
libgstreamer1.0-0 \
libgstreamer-gl1.0-0 \
libqt5gstreamerui-1.0-0 \
libqt5gstreamer-dev \
libqt5gstreamerquick-1.0-0 \
libgl1-mesa-dri \
libqt5webchannel5 \
libqt5webchannel5-dev \
libqt5webengine5 \
libqt5webenginecore5 \
libqt5webengine-data \
libqt5webenginewidgets5 \
libqt5webview5 \
libqt5webview5-dev \
qml-module-qtwebsockets \
qml-module-qtwebview \
qml-module-qtwebchannel \
qml-module-qtwebengine \
qtwebengine5-dev \
&& sed -i -e 's/# zh_CN.UTF-8 UTF-8/zh_CN.UTF-8 UTF-8/' /etc/locale.gen \
&& locale-gen \
&& update-locale LANG=zh_CN.UTF-8 \
&& apt-get autoremove -y \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
# 卸载 fcitx、ibus
RUN apt-get update && \
apt-get remove --purge -y fcitx ibus && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 安装 fcitx5 和 fcitx5-chinese-addons
RUN apt-get update && \
apt-get install -y fcitx5 fcitx5-chinese-addons && \
apt-get autoremove -y && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# 设置环境变量
RUN echo "GTK_IM_MODULE=fcitx" >> /etc/environment \
&& echo "QT_IM_MODULE=fcitx" >> /etc/environment \
&& echo "XMODIFIERS=@im=fcitx" >> /etc/environment \
&& echo "SDL_IM_MODULE DEFAULT=fcitx" >> /etc/environment
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8
Popular Events
More
一、Qt开发的程序想要输入中文的先决条件
1、用户的电脑上要安装fcitx输入法架构。
fcitx输入法包含fcitx-frontend-qt5、libfcitx-qt5-1、deepin-fcitxconfigtool-plugin三个包。
2、开发Qt程序的QtCreator“安装目录/gcc_64/plugins/platforminputcontexts/”有libfcitxplatforminputcontextplugin.so文件。开发过程中可以动态链接进去,或者把fcitx的源码静态编译进去。
3、如果开发过程中是动态链接的,打包过程中需要把libfcitxplatforminputcontextplugin.so文件打包到“/plugins/platforminputcontexts/”目录下。
4、程序运行环境的libfcitx-qt5-1版本要和程序开发环境的版本一致,即不需要完全一样,但需要相互兼容。
二、出现无法输入中文的原因:
1、没装fcitx输入法。
这个见的不多,但是也有。可能装的是ibus或者小小输入法架构。
解决方法:安装fcitx输入法。
2、打包过程中没有把libfcitxplatforminputcontextplugin.so放入包里。
案例:太多了,大部分输入不了就是这个原因。
解决方法:把“/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/”下的libfcitxplatforminputcontextplugin.so复制或软链接到软件安装目录下的“/plugins/platforminputcontexts/”目录中(也可能直接在plugins目录下,也可能中间加几层目录)。如果复制进去还不行,原因见下一条。
3、libfcitx-qt5-1版本不兼容
案例:QtCreator4.11.1、Draftsight2019、ARES Commander 2020
解决方法:
a、等开发者重新编译软件(软件要么弃更了,要么有新版本替代了,各位愿意等就继续等吧)
b、卸载系统的新版本libfcitx-qt5-1,安装兼容的旧版本,然后apt-mark hold libfcitx-qt5-1一下。(deepin20.9系统自带的版本为1.2.6.4-1+rb2,以上三个软件兼容版本是1.0.5-1,下载地址https://theshare.lanzoue.com/b01xh6wbg 密码:9gvw)这样会导致deepin-fcitxconfigtool-plugin报错,系统无法更新,非常不建议。
c、其他地方输入文字,然后复制粘贴进去。
(自从deepin更新到V20以后这三个软件就输入不了中文了,想了这么多年,今天终于想明白,然后验证成功了~)
4、开发者在开发过程中就没考虑英语外其他语言的输入,开发环境中没有libfcitxplatforminputcontextplugin.so库文件。(这个锅得Qt公司来背,QtCreator中只内置了ibus输入法插件,没有fcitx输入法插件)
案例:Inkscape(从作者回帖子中推断)
解决方案:说服开发者在QtCreator中放fcitx输入法插件,然后打包到安装包中。(英语好的给开发者留言吧,我就算了,会用汉语就很了不起了^_^)
三、其他特殊情况
1、新版Appimage格式的GIMP中没有找到libfcitxplatforminputcontextplugin.so,但是可以输入中文,可能是把fcitx5的支持静态编译到软件中了。
2、flatpak格式软件输入不了中文
我用了几年flatpak格式软件了,到现在也没有发现它到底安装到哪里了。要是谁知道可以回帖告诉我。