Skip to content
This repository has been archived by the owner on May 8, 2024. It is now read-only.

sudo启动应用程序无法输入中文 #499

Open
chain78 opened this issue Jun 22, 2021 · 4 comments
Open

sudo启动应用程序无法输入中文 #499

chain78 opened this issue Jun 22, 2021 · 4 comments

Comments

@chain78
Copy link

chain78 commented Jun 22, 2021

https://fcitx-im.org/wiki/FAQ/zh-hans#.E5.9C.A8.E4.B8.80.E8.88.AC.E7.94.A8.E6.88.B7.E7.9A.84_X_.E4.B8.8B_.E8.BF.90.E8.A1.8C_Root_.E6.9D.83.E9.99.90.E7.9A.84.E7.A8.8B.E5.BA.8F

我参考此文档设置GTK_IM_MODULE=xim 和QT_IM_MODULE=xim,用sudo启动程序始终无法输入中文。
方法一:
我将这两句添加到/etc/environment里面后,sudo执行程序没法输入中文。
方法二:
创建/etc/sudoers_env,写入:
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
QT4_IM_MODULE=xim

执行sudo visudo,加入以下内容:
Defaults env_keep += "XMODIFIERS"
Defaults env_file="/etc/sudoers_env"

依然没有效果。

普通用户执行可以输入中文,用sudo启动程序就无法输入中文,搞了好几天了,快崩溃了

@chenshijie-uos
Copy link
Contributor

fcitx是通过qt插件和gtk插件的方式接入框架的,然后各种不同gui插件通过dbus信号告知fcitx按键信息,因为linux是用户隔离的,所以dbus信号不能跨用户通信。如果另一个用户启动的程序只能用另一个用户启动的fcitx才能输入。

根据你的情况,可以使用前端gui部分使用普通用户,后端服务部分使用root用户,这样前端部分就可以输入中文了,后面也具有root权限。

@chain78
Copy link
Author

chain78 commented Jul 5, 2021

fcitx是通过qt插件和gtk插件的方式接入框架的,然后各种不同gui插件通过dbus信号告知fcitx按键信息,因为linux是用户隔离的,所以dbus信号不能跨用户通信。如果另一个用户启动的程序只能用另一个用户启动的fcitx才能输入。

根据你的情况,可以使用前端gui部分使用普通用户,后端服务部分使用root用户,这样前端部分就可以输入中文了,后面也具有root权限。

非常感谢解答!提议非常好!醍醐灌顶了,哈哈哈,发现自己钻牛角尖了

@chenshijie-uos
Copy link
Contributor

chenshijie-uos commented Jul 14, 2021

用 System Bus
企业微信截图_16261648618369
企业微信截图_1626164937199

@xingwozhonghua126
Copy link
Contributor

https://github.com/linuxdeepin/deepin-diskmanager

参考案例如上

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants