您当前的位置:首页 > 计算机 > 系统应用 > Linux

longson GNOME input

时间:11-21来源:作者:点击数:

sudo remove ibus-table

在 Fedora 26/27 GNOME 3.24/3.26 环境中安装 FCITX 小企鹅输入法(修订)

之前我曾经写过一篇文章介绍在 GNOME 3.x 下安装小企鹅输入法框架,但最近在 Fedora 26/27 环境下发现老方法已经失效了,会导致 GNOME 3.24/3.26 桌面在重启后无法进入,探索了一段时间后终于发现了关键问题所在,总结出一套新的方法,可以顺利安装并使用 FCITX 了,具体如下:

1、删除系统自带的 ibus 输入法框架,使用命令 sudo dnf remove ibus 即可。然后在系统设置->键盘设置中,把输入法快捷键禁用掉。

2、安装 fcitx,但注意不要再安装 im-chooser 了,因为 Fedora 26/27 中已经不存在 org.gnome.settings-daemon.plugins.keyboard 这个 dconf 注册表项了,改为 /etc/xdg/autostart/org.gnome.SettingsDaemon.Keyboard.desktop 这个特殊的系统自启动文件,这个文件不能删除,否则系统重启后无法进入桌面并卡死!执行如下命令:

$ sudo dnf install fcitx fcitx-cloudpinyin fcitx-configtool fcitx-gtk2 fcitx-gtk3

3、通过 gnome-tweak-tool 工具将 fcitx 添加为会话自启动程序,这样在每次登录成功进入 GNOME 桌面后就会自动启动 fcitx。

4、在 /etc/profile.d 中增加一个配制脚本命名为 fcitx.sh,内容如下:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

5、安装了 FCITX 的 Linux 系统,在每次重启、关机时,都会出现很长时间的等待,这是因为 fcitx 进程没有正常响应 dbus 系统退出信号造成的,为了解决这个问题,可以在系统退出前手动杀掉 fcitx 进程即可。但如果想通过 rc.6 模式或者 systemd 方式进行重启或关机前自动杀 fcitx 其实效果并不好。我们换一种思路,修改重启或关机时 systemd 等待 fcitx 进程的时长,默认是 90 秒,我们可以把它改为最多只等待 10 秒,就会起到快速重启或关机不再长时间等待的效果了。具体是修改 /etc/systemd/system.conf 文件,将其中的 #DefaultTimeoutStopSec=90s 这一行前面的 # 去掉,然后将其赋值改为 10s 保存即可。

6、关闭 Wayland 显示系统,改为 Xorg 显示模式。因为目前 FCITX 对于 Wayland 的支持还很差,而 Fedora 26/27 GNOME 桌面默认是采用 Wayland 显示系统的,这会导致 FCITX 在 gnome 终端等应用程序中输入中文时的光标跟随出现问题,所以禁用 Wayland。方法是修改 /etc/gdm/custom.conf 文件,将里面 #WaylandEnabled=false 这一行前面的“#”删除,保存后重启即可将显示模式改为 Xorg。

7、重启系统,登录并进入 GNOME 3.24/3.26 桌面后即可正常使用 FCITX 输入法了,并且不会再出现系统重启或关机时长时间等待了。上述方法对于以后更高版本的 GNOME 应该是同样适用的。

 

 

今天博主换操作系统了,之前用的是 CentOS,如今换成 Fedora。主要的原因还是 CentOS 安装一个东西太过折腾了。

之前用的是 ibus,在 Fedora 上我打算用一下 fcitx。  

按我之前的一篇博文的方法,基本上不行。这里博主重新整理一下安装过程。

 

以下为博主亲测过程:

一、首先移除 ibus 

sudo dnf remove ibus-pinyin

提示:在 Fedora 22 下,建议使用 dnf 命令代替 yum,使用方法与 yum 完全一致。

二、然后安装 fcitx 

sudo yum install fcitx fcitx-configtool

三、还要安装中文输入库

sudo yum install fcitx-table-chinese

这里博主要特别说明一下:如里没有这步,在配置的输入法的时候就没有中文输入法出现。

四、配置环境变量

要配置 GTK_IM_MODULE, QT_IM_MODULE, XMODIFIERS。

上面3个环境变量是告诉 gtk 或 qt 的界面程序,在输入时使用指定的输入法模块,比如 ibus 或 fcitx 或其它。

于是在 /etc/profile.d/ 下建一个文件 im.sh,这个名字随意,只要是以.sh结尾就行,具体原因参考 /etc/profile

内容如下:

export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS="@im=fcitx"

这么做的目的是每次启动的时候,上面的这3个环境变量都被设置好。

五、使 fcitx 随系统启动

如果不设置这一步的话,那每一次重新登入都得在后台启动一次 fcitx

 

fcitx &

 

很不太方便~

方法可以参考:

如何为Gnome3添加自启动程序

在Gnome下安装Fcitx并设置开机自启动

往 ~/.config/autostart/ 下写 im.destop 的方式博主试过,不行

编辑 ~/.gnomerc 的方法也试了,不行

博主研究了一下 /etc/X11/xinit/ 目录下的文件,特别是分析 xinitrc 文件。该文件是界面系统启动后的执行脚本。

140621_Igkr_243525.png

在 /etc/X11/xinit/xinitrc.d/ 目录下有 50-xinput.sh 文件,里面提到

141628_XgAL_243525.png

那就把启动加在 ~/.xinputrc 文件里面,内容为: "fcitx &" ,退出登入,再试。

这次是可以的了!一登入就有 fcitx 输入法。

提示:重新登陆后,~/.xinputrc 文件不会再存在了,它是被X11移到别的路径下去了(详见 /etc/X11/xinit/xinitrc.d/50-xinput.sh,L45)。

其实就是被 mv 到 ~/.config/imsettings/xinputrc 文件里,我们也可以直接修改这个文件。

六、优化

感觉不应该将环境变量的配置放 /etc/profile.d/ 下,必竟 fcitx 是依赖于 X11 的一个工具,最好全放 ~/.xinputrc 文件里。

删除 /etc/profile.d/im.sh,编辑 ~/.xinputrc,内容如下:  

 

export GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitxexport XMODIFIERS="@im=fcitx"fcitx &

 

完成!重新登入。

七、解决terminal下不能用fcitx问题

解决这个问题的方法很简单,就是在 ~/.xinputrc 中添加一行,如下:

 

export GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitxexport XMODIFIERS="@im=fcitx"eval `dbus-launch --sh-syntax --exit-with-session`fcitx &

 

八、后续遇到的问题

重新了一次系统,安装的时候选择的语言是英文,结果就没法按上面的方法设置并启动 fcitx,解决的办法就是将系统的 language 切换成中文。

110014_pbTh_243525.png  

110147_f9Zt_243525.png

然后重新登入。

这次还发现,在 terminal 下可以使用 fcitx,在 firefox 与 gedit 下就用不了。真是懊恼呀!用命令查看我们设置的两个环境变量:

 

$ echo $QT_IM_MODULEfcitx$ echo $GTK_IM_MODULE $


原来,GTK_IM_MODULE 这个环境变量是空的。用命令启动 gedit

 

GTK_IM_MODULE=fcitx gedit

 

这样启动的 gedit 就可以使用 fcitx 了。看来还真是 "GTK_IM_MODULE" 这个环境变量引起的。

真的好奇怪,为什么 QT_IM_MODULE 有值,而偏偏 GTK_IM_MODULE 却没有值呢?为啥?

解决方法是,将

 

export GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitxexport XMODIFIERS="@im=fcitx"eval `dbus-launch --sh-syntax --exit-with-session`


放到 /etc/procfile.d/xim.sh 文件中去,而在 .xinputrc 中只放 

 

fcitx &

 

这样就解决上面的这个环境变量不到位的问题。

 

九、再次遭遇 gnome-terminal 不用使用 fcitx 问题

这次我使用了上面所有的办法都不行,最后找到有一方法是,修改gnome的配置表:  

 

sudo gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "{'Gtk/IMModule':<'fcitx'>}"

 

这就是将 org.gnome.settings-daemon.plugins.xsettings 下的 overrides 选项设置成 {'Gtk/IMModule':<'fcitx'>}

也可以用 dconf-editor 窗口工具(可能要安装)来进行设置:

105307_9W6k_243525.png

将 {} 改成 {'Gtk/IMModule':<'fcitx'>} 即可。

 

注意:这两种方法都要用 root 权限,否则不会成功。

这样之后,退出用户,重新登入即可。

 

十、再次遭遇 gnome-terminal 不用使用 fcitx 问题

这次是使用了上面的所有办法,最终的解决办法是:

/etc/profile.d/xim.sh (没有就自己创建)

 

export XIM=fcitxexport XIM_PROGRAM=fcitxexport GTK_IM_MODULE=fcitxexport QT_IM_MODULE=fcitxexport XMODIFIERS="@im=fcitx"eval `dbus-launch --sh-syntax --exit-with-session`

 

如果发现不奏效,就在终端里查一下上面的5个环境变量是否有值,一定要确保它们的值为"fcitx"。对于最后一行,查看环境变量:DBUS_SESSION_BUS_PID 是否有值

创建 ~/.xinputrc 文件:

 

fcitx &


它的功能就是在启动gnome时后台启动 fcitx
重新登入

 

https://www.cnblogs.com/cyberniuniu/p/8138202.html

https://yq.aliyun.com/articles/33311

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
    无相关信息
栏目更新
栏目热门