sudo 启动应用程序无法使用fcitx输入法的解决方案

一、问题原因

二、解决方案

1、通过whereis fcitx找到fcitx的安装位置

2、在/usr/share/fcitx/data,我们可以找到env_setup.sh,这是fcitx的环境变量安装脚本。在里面可以找到对应的配置变量的命令。

3、在/etc/bashrc中配置fcitx的环境变量,使得/etc/sudoers配置文件可以继承该环境变量

sudo gedit /etc/bashrc
# fcitx配置,使得sudo开启的文件也能使用输入法
export XMODIFIERS=“@im=fcitx”
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx

4、在/etc/sudoers 中继承以上环境变量

sudo gedit /etc/sudoers

在Defaults下面追加以下命令:

Defaults:%sudo env_keep += "XMODIFIERS GTK_IM_MODULE QT_IM_MODULE"

如图所示:

5、编写 个人用户 和 sudo组 切换使用fcitx输入法的脚本,使其可执行

(1) 自己找个目录,创建 open_sudo_fcitx.sh 和 close_sudo_fcitx.sh

touch open_sudo_fcitx.sh

touch close_sudo_fcitx.sh

(2) open_sudo_fcitx.sh

#!/bin/sh
fcitx-remote -e #关闭用户层级的fcitx
sudo fcitx #开启root层级的fcitx

(3) close_sudo_fcitx.sh

#!/bin/sh
sudo fcitx-remote -e #关闭root层级的fcitx
fcitx #开启用户层级的fcitx

(4) 授予可执行权限

sudo chmod a+x open_sudo_fcitx.sh

sudo chmod a+x close_sudo_fcitx.sh

6、关闭sudo输入密码,使得以上可执行脚本免输入密码

sudo gedit /etc/sudoers 

找到 %sudo,末尾的 ALL 改为 NOPASSWD:ALL 即可

7、给上面的脚本起别名

(1) 在/etc/bashrc中起别名,脚本路径修改成你自己的即可

# vim使用的是终端(键盘)输入,vim或者sudo vim都支持fcitx。
# 但是gedit和Notepad-- 在用sudo开启时,是不支持fcitx的,需要先关闭用户层级的fcitx,接着开启sudo组的fcitx
# 方可使用fcitx输入法。
# 下面把开启sudo fcitx和关闭 sudo fcitx的操作写成了两个可执行脚本。
# 每当运行sudo gedit 或者 sudo np 时,请先开启osf: osf|sudo gedit <filename>
# 退出编辑后,运行csf来关闭sudo组的fcitx,开启用户层级的fcitx。

alias osf='/opt/linux简易执行脚本/sudo_fcitx/open_sudo_fcitx.sh' # 开启sudo fcitx的运行脚本
alias csf='/opt/linux简易执行脚本/sudo_fcitx/close_sudo_fcitx.sh' # 关闭sudo fcitx的运行脚本

(2) Shell的配置文件:~/.zshrc 、 ~/.bashrc 引用/etc/bashrc

    

8、想要 sudo 开启应用程序后使用到fcitx输入法,请输入osf命令

 此时关闭了用户层级的fcitx,启动了root层级的fcitx。

此时执行sudo gedit <filename>,可以使用fcitx输入法了

9、关闭应用程序后,我们希望在用户层级使用fcitx,请输入csf命令

参考文章:

【Linux】使用sudo运行的程序,无法输入中文的原因和解决方法_echo "lba" | sudo -s 执行qt应用程序无法输入中文-CSDN博客

sudo启动应用程序无法输入中文 · Issue #499 · fcitx/fcitx · GitHub

  • 25
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值