GhostBSD安装Fcitx中文输入法备忘录

  此前在基于FreeBSD12.2的GhostsBSD 21操作系统上安装Fcitx5半途而废,以为不支持,就转而成功安装了fcitx4。后因升级GhostBSD无法启动图形环境而重装了基于FreeBSD 13的GhostBSD 21后,下决心要测试下fcitx5能否支持GhostBSD。当查询到fcitx5已支持freebsd13信息后,猜测没多大问题,故又在折腾中琢磨了一番,记录下过程,权作备忘。

  1.安装Fcitx5。安装输入法需安装输入法框架和输入法引擎。根据系统具备自动解决依赖关系的特点,我直接安装的输入法引擎。sudo pkg install zh-fcitx5-chinese-addons fcitx5-configtool。安装前可pkg search 查询有无相应安装包以及名称、版本。也可以通过ports安装,或源码编译安装。

  因本人使用五笔,直接的安装的是zh-fcitx5-chinese-addons这个fcitx5输入法引擎,其中包含五笔、拼音及五笔拼音等多种输入法,当时系统根据依赖关系自动安装了40个包。安装完后可检查一下针对gtk、qt的模块是否自动正确安装好,可根据所用的桌面环境了解哪些包必须安装;安装后终端给出了配置提示,但未说明修改哪一个配置文件。安装后,自然而然地在菜单中找到相关项目设置fcitx,但显示fcitx-config-qt未安装的错误提示。虽然无图形化配置工具也可手工修改配置文件,但麻烦些。考虑到我所用的桌面环境MATE基于Gnome,而Gnome基于gtk,可安装:sudo pkg install fcitx5-configtool,当时系统根据依赖关系又安装了一批软件包。也就是说,fcitx5有针对gtk、qt的多个图形化配置工具,但我还没安装过fcitx-config-qt。我的桌面是基于X11协议的Xorg图形显示服务器的MATE图形界面环境,安装后系统自动添加了开机启动fcitx(注:凡 兼容XDG的桌面环境,比如 KDE、GNOME、 XFCE、 LXDE、MATE, 系统会自动添加启动项,也就是安装 Fcitx并重新登录后Fcitx 会自动启动)。若重启后未自动加载,应在使用的启动脚本里面添加 fcitx 以实现自动启动(附件中最后一句代码)。

  2.配置环境变量。先说结论,只考虑默认用户使用,仅修改.xprofile即可,添加以下内容后重启操作系统即可。

#也可写为XIM=fcitx5;export XIM;fcitx5换为fcitx也行,下同
export XIM=fcitx5
export GTK_IM_MODULE=fcitx5
export QT_IM_MODULE=fcitx5
export XIM_PROGRAM=fcitx5
export XMODIFIERS="@im=fcitx5"

  我在想,为什么fcitx不通过安装程序针对不同系统自动修改配置文件呢?应该不难啊,至少针对用户较多的操作系统作个适配,无非是先判断操作系统,再向配置文件定向输入几行代码。还要用户自已配置。可能操作系统太多样,受linux、unix一贯的风格所影响吧,让用户自己搞定,不过多干涉用户吧。

  此后内容可略过。对我而言,记录一下探索的过程,可加深记忆,触类旁通。不知其原理,记不住也学不通。根据安装fcitx5后终端关于setenv的提示(见附件),考虑到shell为csh,推测可能应先修改.cshrc等(若设置全局使用,则应修改/etc/csh.cshrc和/etc/profile)(注:查资料得知,先判断shell是csh、sh或bash,再决定是用setenv还是export设置变量。可以通过echo $SHELL或者 cat /etc/passwd 查看shell类型,或通过终端的标识,比如%,#。如果是csh、zsh,用setenv;如果是bsh用export。但我也很困惑,这应该是针对命令行方式的,要不我的shell是csh,但在图形界面配置文件.xprofile中用的是export,而且.profile也是用的export。没搞明白,再研究)。修改.cshrc,添加:

#指定X图形程序的输入法
setenv XMODIFIERS @im=fcitx
#指定GTK immodule,xim输入法表示所有X图形程序可调用
setenv GTK_IM_MODULE fcitx/xim
#指定QT immodule
setenv QT_IM_MODULE fcitx
#解决终端无法输入中文、无法显示中文及乱码的问题。或无需设置,因为系统的其他配置或已设定,若国别、语言等选择的美国、英文的或许需设置。
setenv LANG zh_CN.UTF-8
setenv MM_CHARSET zh_CN.UTF-8
setenv LC_CTYPE zh_CN.UTF-8
setenv LC_ALL zh_CN.UTF-8

  注:要在Shell中正常显示系统的中文提示信息和支持中文输入,LANG和shell的编码配置需一致,并安装有中文locale。如:LANG和 shell的编码都配置成zh_CN.UTF-8,并安装有zh_CN.UTF-8这个locale。如果shell和LANG配置不同,则中文显示乱码;如果LANG里设置的locale没有安装,则不能显示系统的中文提示信息,只会显示英文提示信息。

  然而,配置并重启操作系统后,仍无法输入中文。解决问题期间,发现fcitx5-gtk未安装,而mate基于gtk必须安装,但增补安装了也无济于事。继续搜索解决办法,网上了解到“如果您用中文桌面环境,能启动fcitx ,但不能输入,大多是控制台的locale和桌面的locale不一致所引起的”。在.profile添加以下两行代码后重启即可输入中文。

XMODIFIERS="@im=fcitx"; export XMODIFIERS
LC_CTYPE="zh_CN.UTF-8"; export LC_CTYPE

  此处备注Local的常识。Locale是根据计算机用户所使用的语言、所在国家或者地区以及当地的文化传统所定义的一个软件运行时的语言环境。分12个大类,即语言符号及其分类(LC_CTYPE)、数字(LC_NUMERIC)、比较和排序习惯(LC_COLLATE)、时间显示格式(LC_TIME)、货币单位(LC_MONETARY)、信息主要是提示信息错误信息状态信息标题标签按钮和菜单等(LC_MESSAGES)、姓名书写方式(LC_NAME)、地址书写方式(LC_ADDRESS)、电话号码书写方式(LC_TELEPHONE)、度量衡表达方式 (LC_MEASUREMENT)、默认纸张尺寸大小(LC_PAPER)、对locale自身包含信息的概述(LC_IDENTIFICATION)。设定locale就是设定12大类的locale分类属性,即12个LC_*。除了这12个变量可以设定以外,为了简便起见,还有两个变量可设定:LC_ALL和LANG。它们之间有一个优先级的关系:LC_ALL > LC_* >LANG。LC_ALL是最上级设定或者强制设定,设定后将覆盖所有其他的locale设定,而LANG是默认设定值。 我理解,就是设国家、字符集和语言,比如在中国,可选用多个中文字符集,你可以讲中文普通话、方言,也可以讲外语,但须事先明确一个规则,否则沟通起来不知所云,也就是事先告诉操作系统是什么规则。一般在安装操作系统时就选择了国别和语言。但要用中文,安装操作系统时也不是非得选中国、汉语。明确了这一点,.profile配置文件中LC_CTYPE就好理解了,当然定义LC_ALL也是可行的。比如我在安装操作系统时选择的是中国、汉语,则.profile中就自定义有:

# Set default locale
CHARSET=UTF-8; export CHARSET
LANG=zh_CN.UTF-8;    export LANG

  此后再验证是否搞定,但因需要流式软件,安装了Libreoffice后无法输入中文(有谁知道freebsd可以安装wps office吗?),又在网上搜索求教,参照Archlinux wiki,设置当前用户的桌面环境变量,修改~/.xprofile,添加的是前面提到的五行变量设置,成功搞定Libreoffice中文输入问题,而且经验证,其他图形界面软件均可输入,终端也可输入、显示中文。

  注:~/.xprofile 是用户级配置文件,用户每次以X Windows登陆方式登陆,则执行该配置文件,也就是刚打开X会话时,在窗口管理器运行之前运行命令,用于随会话自动运行程序,或从显示服务器启动,尤其是那个会话没有自带自动启动程序功能时,比如一个独立的窗口管理器。~/.profile 是用户级配置文件,用户每次以命令行登陆方式登陆,则执行该配置文件。此外,如果使用 Wayland 图形显示服务器,需设置系统的环境变量,修改/etc/environment,添加的内容同上。

  到这里,我仍有困惑,安装一个输入法,一共修改了三个配置文件,没道理呀。对类unix、linux系统知之不深,对应该修改哪个配置文件、为什么要修改那个配置文件的原理尚未搞明白,而且配置文件之间往往互相调用,确实比较复杂。我有“知其所以然”的习惯,灵机一动,抱着试一试的想法,心想也许只修改一个配置文件就行,图形界面环境下输入法配置可能不干.cshrc和.profile两个配置文件的事,遂删除此前对这两个文件的修改内容,并重启操作系统。此后,又试了多个软件,均能完美输入中文,终端也可。也就是说,对GhostBSD桌面环境而言,安装fcitx5,仅配置.xprofile即可。

  此外,在ubuntu、manjaro、Fedora、Elementary上也安装了fcitx,期间也用过ibus,谁好谁差说不上,对我而言,只要能输入中文即可。过去,每安装一个系统,都是临时抱佛脚,系统出问题重装后也不能熟练重复操作,事后也并未及时总结作笔记。我体会,整非win操作系统,最初的难关无非是显卡驱动和输入法。之所以想试用GhostBSD,主要是因为没整过类Unix,加之听说苹果macos与FreeBSD颇有渊源,就想试试FreeBSD,因习惯一体化的安装方式,就先试了HellosSystem,与macos有几分相像,因升级后无法重启加之官方文档较少就放弃了,转而试用的GhostBSD。

  体会:学习linux、类unix最好的办法还是看官方说明,有时指望搜索引擎难以解决问题,系统不一样、环境不一样,且考虑到类unix、linux的系统的多样性,网友提供的方法有时不具有可复制性,难以掌握原理,时间花得多,知识碎片化,知其然但不知其所以然。

  附件:这是当时安装zh-fcitx5-chinese-addons后终端的提示,指导如何配置。但最后的方法其实并不是按这个提示做的。实事求是地讲,对操作系统的还知之甚少。配置文件文件太多,相互的对应关系是怎么样的,暂未弄明白,而要详细了解操作系统的启动过程,查看配置文件的相互调用关系、了解配置文件的影响范围,弄通后,解决问题就会水到渠成。重要的是思路框架,而不是操作方法,形成解决一个问题的思维导图;方向不对,努力白费。

Message from fcitx5-5.0.4:
--
Remember to set the environment variable XMODIFIERS:

    csh/tcsh:    setenv XMODIFIERS @im=fcitx
    sh/bash:    export XMODIFIERS='@im=fcitx'

For GTK+ programs, you may want to set:

    csh/tcsh:    setenv GTK_IM_MODULE fcitx/xim
    sh/bash:    export GTK_IM_MODULE=fcitx/xim

For Qt programs, you may want to set:

    csh/tcsh:    setenv QT_IM_MODULE fcitx
    sh/bash:    export QT_IM_MODULE=fcitx

To start fcitx with your desktop, just

    cp /usr/local/share/applications/org.fcitx.Fcitx5.desktop ~/.config/autostart/

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值