标签:效果 eui ash 菜单 office ibus 开始 linux 第一个
最近换电脑,要换掉使用了6年的旧环境,开始折腾重装系统;
下了minimal版本的CentOS7.4,然后开始一点点装想用的东西,多少找到一点十年前折腾LFS的感觉;然后竟然被输入法拌住了半天,事后回想整个解决流程,觉得有必要记下来;
在gnome上安装、设置中文输入法,按标准的教程点一点菜单就可以了,然后也确实在界面上看到了输入法的存在,也可以切换输入法,但是gnome-terminal和firefox都无效,任输入法怎么切换,输入的内容只是纯字符;
然后像小白一样开始查资料,过程中绕过弯路,如果想知道最终结果,请直接跳到结论部分;
第一篇比较有用的资料是这个:在ArchLinux KDE 4.14桌面环境中正常使用ibus输入法
按其方法,做以下操作:
1,在/etc/profile添加以下文字
export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
2,在~/.config/autostart文件夹里建立一个ibus.desktop文件,内容如下。
[Desktop Entry]
Exec=ibus-daemon -xdr
GenericName=IBus
Name[zh_CN]=IBus
Name=IBus
Name[en_US]=IBus
Path=
StartupNotify=true
Terminal=false
TerminalOptions=
Type=Application
X-DBUS-ServiceName=
X-DBUS-StartupType=
X-KDE-SubstituteUID=false
X-KDE-Username=
最后chmod 755 ibus.desktop,重新启动gnome
再次进入gnome的时候,发现gnome-terminal已经可以输入中文了,很好;
然而打开firefox,无效果,依然调不出输入法;
之后继续查资料,第二篇较有用的资料是这个:ArchWiki_IBus#LibreOffice)
当中比较有意思的几个点如下:
export XMODIFIERS=@im=ibus
然后你需要用 "--xim -d" 参数来启动 ibus, 你可以在 ~/.xinitrc 中加入这行:
ibus-daemon --xim -d
但是可怕的是你必须在终端中启动 LibreOffice。
~/.profile
后重启 gnome。export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus
ibus-daemon -d -x
针对第一个点,设置LANG为中文环境,我做了以下尝试,比如:
所以我认定firefox无法调出ibus输入中文的问题,与LANG环境变量无关,所以以至于当我看到一篇11年的文章,说他在Ubuntu上遇到了firefox无法使用ibus的问题,最后把语言环境从英文切换到中文得到了解决,我直接的想法就是这是扯淡,11年太久远了,这个说法没有任何参考价值;
针对第二个点,我试下来之后,startx会失败,所以也无效;
针对第三个点,我仔细一看,原来资料1就是参考了这里的做法,但是资料1的做法更好,所以也就不需要试了;
再次继续查资料,然后找到了第三篇比较有价值的资料:firefox下无法使用ibus
这篇文章很短,做法也不漂亮,但是一针见血,他在firefox的启动脚本里加了两个环境变量:
XMODIFIERS=@im=IBUS
GTK_IM_MODULE=IBUS
export XMODIFIERS GTK_IM_MODULE
这两个变量在/etc/profile里都已经设过了啊(见资料一),然后我赶紧看gnome-terminal的环境变量
$ echo $XMODIFIERS
@im=IBUS
$ echo $GTK_IM_MODULE
gtk-im-context-simple
$ echo $QT_IM_MODULE
xim
试一下强制设定启动firefox:
$ GTK_IM_MODULE=IBUS firefox
firefox可以输入中文了,果然在gnome环境下,gtk程序调用输入法是要看GTK_IM_MODULE变量的;
然后回到终端模式,查了一下这三个环境变量,都是ibus,说明/etc/profile肯定是生效了;
接下来的问题就是,这个变量怎么进gnome以后就变了呢?肯定是X初始化过程中对它进行了修改;
于是以gtk-im-context-simple为关键字,对/etc做了一遍grep;
==============以下是结论================
X11在初始化过程中,需要对输入法做一定的设定,其执行脚本在CentOS7.4中位于这个位置:
/etc/X11/xinit/xinitrc.d/50-xinput.sh
这个脚本可能读取多个配置文件,从而最终决定GTK_IM_MODULE和QT_IM_MODULE变量的值,而不是沿用启动X时已有的值(这就是坑啊);
配置文件的优先权顺序为:
1. 用户的设定为最高顺位,如果有,文件位于~/.config/imsettings;
2. 系统设定为次高级顺位,文件位于/etc/X11/xinit/xinputrc,它事实上是一个软链,链接到了/etc/X11/xinit/xinput.d/ibus.conf,没错,这个文件设定了正确的ibus输入法;
但是(最讨厌的但是),它有个前置条件,需要检查系统的语言环境是否是非英文环境,即如果是英文环境,它会继续从后面的顺位找配置文件;
这也解释了为什么会有人(资料二)通过修改系统语言解决这个问题,但这里并不是直接检查LANG变量,而是先检查LC_CTYPE,然后才检查LANG;
3. xxxx,略去不写,有兴趣的自己读一下这个脚本;
4. 最后,读一个默认的配置文件,位于/etc/X11/xinit/xinput.d//none.conf
就是这个none.conf中,把GTK_IM_MODULE和QT_IM_MODULE变量的值给改成了gtk-im-context-simple与xim。
于是,最后我在~/.bashrc中加了一条环境变量export LC_CTYPE=zh_CN.UTF-8,这样即不会把gnome的菜单改成中文菜单,又可以解决xinput.sh脚本对语言环境的检查,解决了firefox启用ibus的问题;
希望对看到这篇文章的人有用。
CentOS7解决firefox无法启用ibus中文输入的问题
标签:效果 eui ash 菜单 office ibus 开始 linux 第一个
原文地址:https://www.cnblogs.com/ZisZ/p/8833038.html
Original url: Access
Created at: 2019-10-02 03:54:04
Category: default
Tags: none
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
java windows火焰图_mob64ca12ec8020的技术博客_51CTO博客 - 在windows下不可行,不知道作者是怎样搞的 监听SpringBoot 服务启动成功事件并打印信息_监听springboot启动完毕-CSDN博客 SpringBoot中就绪探针和存活探针_management.endpoint.health.probes.enabled-CSDN博客 u2u转换板 - 嘉立创EDA开源硬件平台 Spring Boot 项目的轻量级 HTTP 客户端 retrofit 框架,快来试试它!_Java精选-CSDN博客 手把手教你打造一套最牛的知识笔记管理系统! - 知乎 - 想法有重合-理论可参考 安宇雨 闲鱼 机械键盘 客制化 开贴记录 文本 linux 使用find命令查找包含某字符串的文件_beijihukk的博客-CSDN博客_find 查找字符串 ---- mac 也适用 安宇雨 打字音 记录集合 B站 bilibili 自行搭建 开坑 真正的客制化 安宇雨 黑苹果开坑 查找工具包maven pom 引用地 工具网站 Dantelis 介绍的玩轴入坑攻略 --- 关于轴的一些说法 --- 非官方 ---- 心得而已 --- 长期开坑更新 [本人问题][新开坑位]关于自动化测试的工具与平台应用 机械键盘 开团 网站记录 -- 能做一个收集的程序就好了 不过现在没时间 -- 信息大多是在群里发的 - 你要让垃圾佬 都去一个地方看难度也是很大的 精神支柱 [超级前台]sprinbboot maven superdesk-app 记录 [信息有用] [环境准备] [基本完成] [sebp/elk] 给已创建的Docker容器增加新的端口映射 - qq_30599553的博客 - CSDN博客 [正在研究] Elasticsearch, Logstash, Kibana (ELK) Docker image documentation elasticsearch centos 安装记录 及 启动手记 正式服务器 39 elasticsearch 问题合集 不断更新 6.1.1 | 6.5.1 两个版本 博客程序 - 测试 - bug记录 等等问题 laravel的启动过程解析 - lpfuture - 博客园 OAuth2 Server PHP 用 Laravel 搭建带 OAuth2 验证的 RESTful 服务 | Laravel China 社区 - 高品质的 Laravel 和 PHP 开发者社区 利用Laravel 搭建oauth2 API接口 附 Unauthenticated 解决办法 - 煮茶的博客 - SegmentFault 思否 使用 OAuth2-Server-php 搭建 OAuth2 Server - 午时的海 - 博客园 基于PHP构建OAuth 2.0 服务端 认证平台 - Endv - 博客园 Laravel 的 Artisan 命令行工具 Laravel 的文件系统和云存储功能集成 浅谈Chromium中的设计模式--终--Observer模式 浅谈Chromium中的设计模式--二--pre/post和Delegate模式 浅谈Chromium中的设计模式--一--Chromium中模块分层和进程模型 DeepMind 4 Hacking Yourself README.md update 20211011
Laravel China 简书 知乎 博客园 CSDN博客 开源中国 Go Further Ryan是菜鸟 | LNMP技术栈笔记 云栖社区-阿里云 Netflix技术博客 Techie Delight Linkedin技术博客 Dropbox技术博客 Facebook技术博客 淘宝中间件团队 美团技术博客 360技术博客 古巷博客 - 一个专注于分享的不正常博客 软件测试知识传播 - 测试窝 有赞技术团队 阮一峰 语雀 静觅丨崔庆才的个人博客 软件测试从业者综合能力提升 - isTester IBM Java 开发 使用开放 Java 生态系统开发现代应用程序 pengdai 一个强大的博主 HTML5资源教程 | 分享HTML5开发资源和开发教程 蘑菇博客 - 专注于技术分享的博客平台 个人博客-leapMie 流星007 CSDN博客 - 舍其小伙伴 稀土掘金 Go 技术论坛 | Golang / Go 语言中国知识社区
最新评论