[2018.6.25]fcitx把openbox弄死的不完美凑合解决方法(欢迎提供更好方法)

各种窗口管理器和美化相关
poloshiao
论坛版主
帖子: 18279
注册时间: 2009-08-04 16:33

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#16

帖子 poloshiao » 2016-03-04 12:49

root 权限程序如何启动的,可能环境变量问题
例如 sudo 环境可能设置了 env_reset 导致没有以下环境变量
1. 輸入法的設定 基本上是 使用者空間 的設定 不是 內核空間 的設定
1-1. https://zh.wikipedia.org/wiki/%E4%BD%BF ... A%E9%96%93
使用者空間
1-1-1. https://en.wikipedia.org/wiki/User_space
User space
1-2. 所有運行在使用者空間的應用程式,都被統稱為用戶級(userland)。
1-3. 這是記憶體保護機制中的一環。
1-4. 意思是 輸入法 基本上是用戶級(userland) 的應用程式

2. 非 root 帳號登入 輸入法 設定 應該在 ~/ 家目錄 (/home/username)
2-1. 如果 非 root 帳號登入 使用 sudo / gksudo 設定 輸入法 或 切換成 root 身份
是 更改 /root 目錄裡的帳號
2-2. 意思是 更改 root 帳號的 家目錄 /root 影響的是
使用者 root 登入時的 輸入法環境
不是 影響所有 使用者 帳號 輸入法環境 的 system-wide 設定
只是 root 程序出不来中文
3. 目前
有些 使用者 root 的 使用者空間 輸入法環境變數設定 跟 root 的權限設定
與 文字編輯程式 或 文字輸入程式 一直有不相容的地方 還沒 100% 搞定
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#17

帖子 vickycq » 2016-03-04 13:16

科学之子 写了:要是不用搜狗拼音,我的方法是否管用?我用的是fcitx-pinyin.
我是在另一台机器上试的,桌面配置完全一样。但没有搜狗输入法
科学之子 写了:如无问题建议换lxde,组件少,遇到问题解决起来也简单.
xfce4 的组件我也没用几个,基本只有它的 session manager 和 xfce4-panel。
看来要更换 lxpanel 试试

LXDE 的东西没什么依赖,这点不错

===========================================

试验过程:
1. 允许 fcitx 自启,换用 lxpanel,问题依旧
2. 禁止 fcitx 自启,换用 lxpanel,问题依旧
3. 允许 fcitx 自启,使用完整 lxde,重启 fcitx 不会卡死。但第一次执行 pkill fcitx 时如果用的是 xterm,xterm 会变成空白且无法将鼠标指针移入。其它终端无此问题
4. 禁止 fcitx 自启,使用完整 lxde,重启 fcitx 不会卡死。上面 xterm 变成空白的问题消失

lxpanel 的 pager 不支持工作区二维排列,于是在 lxde 环境下用 xfce4-panel 替换 lxpanel,重启 fcitx 不会卡死。 :em09

问题究竟处在 xfce4 的哪个组件上呢?或者说 lxde 的哪个组件避免了 重启 fcitx 卡死呢?
以前不用 xfce4 时也有重启 fcitx 卡死问题,当时的桌面组件为:
openbox
tint2
mate-settings-daemon
mate-power-manager
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#18

帖子 vickycq » 2016-03-04 13:29

poloshiao 写了:
root 权限程序如何启动的,可能环境变量问题
例如 sudo 环境可能设置了 env_reset 导致没有以下环境变量
1. 輸入法 基本上是 使用者空間 的設定 不是 內核空間 的設定
(...恕删)
这里指的是 sudoers 中

代码: 全选

Defaults	env_reset
这一项设定
不确定 Ubuntu 的 sudoers 默认有没有这一条?
如果有,那么使用 sudo 运行应用程序时,大部分环境变量会被清零,这其中就包括 XMODIFIERS 等
poloshiao 写了:有些 使用者 root 的 使用者空間 輸入法環境變數設定 跟 root 的權限設定
與 文字編輯程式 或 文字輸入程式 一直有不相容的地方 還沒 100% 搞定
确实有这个问题
设置 Defaults env_keep+="XMODIFIERS GTK_IM_MODULE QT_IM_MODULE" 后,sudo xterm 可以使用输入法,sudo leafpad 无法使用输入法
不设置 Defaults env_keep+="XMODIFIERS.... 时,sudo xterm 无法使用输入法,sudo leafpad 无法使用输入法
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
TeliuTe
论坛版主
帖子: 7668
注册时间: 2007-11-25 13:29
系统: 16/18/20/w7
来自: 新疆博乐
联系:

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#19

帖子 TeliuTe » 2016-03-04 13:37

vickycq 写了:
TeliuTe 写了:...只是root程序出不来中文,临时从普通程序里复制过去
root 权限程序如何启动的,可能环境变量问题
例如 sudo 环境可能设置了 env_reset 导致没有以下环境变量
(假设输入法为 fcitx)

代码: 全选

export XMODIFIERS=@im=fcitx
export QT_IM_MODULE=fcitx
export QT4_IM_MODULE=fcitx
export GTK_IM_MODULE=fcitx
下回用的时候试一下,机子平时开机关机都是设的自启动,没怎么动它
root一般是从pcmanfm里的工具菜单以root身份打开文件夹,然后右键编辑文件也没进终端,用的时候才发现没中文 :em06
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#20

帖子 vickycq » 2016-03-04 13:55

TeliuTe 写了: 下回用的时候试一下,机子平时开机关机都是设的自启动,没怎么动它
root一般是从pcmanfm里的工具菜单以root身份打开文件夹,然后右键编辑文件也没进终端,用的时候才发现没中文 :em06
可以尝试 visudo 添加

代码: 全选

Defaults   env_reset
Defaults   env_keep+="XMODIFIERS GTK_IM_MODULE QT_IM_MODULE"
但如楼上所述,您的问题可能是不仅仅是这个。我按上面设置 env_keep 后 sudo leafpad 依然无法使用输入法 :em06
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#21

帖子 科学之子 » 2016-03-06 13:47

tang.zhe 写了:
科学之子 写了: ...
之后ctrl+d把窗口关掉就可以实现后台运行了
...
ctrl+d是什么快捷键,查不到?
Linux下键盘输入的EOF
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#22

帖子 科学之子 » 2016-03-06 14:10

vickycq 写了:
科学之子 写了:要是不用搜狗拼音,我的方法是否管用?我用的是fcitx-pinyin.
我是在另一台机器上试的,桌面配置完全一样。但没有搜狗输入法
科学之子 写了:如无问题建议换lxde,组件少,遇到问题解决起来也简单.
xfce4 的组件我也没用几个,基本只有它的 session manager 和 xfce4-panel。
看来要更换 lxpanel 试试

LXDE 的东西没什么依赖,这点不错

===========================================

试验过程:
1. 允许 fcitx 自启,换用 lxpanel,问题依旧
2. 禁止 fcitx 自启,换用 lxpanel,问题依旧
3. 允许 fcitx 自启,使用完整 lxde,重启 fcitx 不会卡死。但第一次执行 pkill fcitx 时如果用的是 xterm,xterm 会变成空白且无法将鼠标指针移入。其它终端无此问题
4. 禁止 fcitx 自启,使用完整 lxde,重启 fcitx 不会卡死。上面 xterm 变成空白的问题消失

lxpanel 的 pager 不支持工作区二维排列,于是在 lxde 环境下用 xfce4-panel 替换 lxpanel,重启 fcitx 不会卡死。 :em09

问题究竟处在 xfce4 的哪个组件上呢?或者说 lxde 的哪个组件避免了 重启 fcitx 卡死呢?
以前不用 xfce4 时也有重启 fcitx 卡死问题,当时的桌面组件为:
openbox
tint2
mate-settings-daemon
mate-power-manager
3. 允许 fcitx 自启,使用完整 lxde,重启 fcitx 不会卡死。
我这里如果fcitx默认状态下自动运行,存在一定概率卡死,但不是每次重启都会卡死.
禁用fcitx自动运行之后再也没卡死过.
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#23

帖子 科学之子 » 2016-03-06 17:05

vickycq 写了:
科学之子 写了:"im-config设置为none"是我最后才进行的操作,之前进行两个操作貌似都没用(试了"lxsession-edit把fcitx自动运行去掉"之后就没耐心重启了),但我不确定是哪个操作生效的,所以都写出来了
话说这个输入法自启问题 还是我在本论坛发的第一个帖子: viewtopic.php?f=123&t=334145
当时对 Linux 桌面还不是很懂。
这几天才发现,竟然还是没搞清楚 fcitx 是如何自启的。还好这次很快就找出了根源:im-config
当年可能也是这个问题。
科学之子 写了:终端用的是什么?
xterm.
貌似 fcitx 从终端启动后貌似会自动 fork 到最上面。所以不论怎么启动 fcitx,用 pstree 查看都会发现 fcitx 是 init(systemd) 的子进程

关于应用程序如何读取环境变量,整体还不太理解。这个问题的关键是 openbox 读取到的环境变量
具体看之前的帖子 viewtopic.php?p=3153965#p3153965 下方的一系列试验
这里我又不明白了,“用 xfce4 菜单启动 xfce4-terminal,XMODIFIERS 错误”,难道在终端里执行 echo $XMODIFIERS 不是看 .bashrc .profile 等文件中的设置么,怎么会错误呢?


增加试验:
用 dmenu 启动 xterm,没有延时,echo $XMODIFIERS 错误,不可使用输入法
在 .bashrc 中增加 export XMODIFIERS=@im=fcitx,再用 openbox 菜单启动 xterm,有很大延时,echo $XMODIFIERS 正确,不可使用输入法
在 .bashrc 中增加 export XMODIFIERS=@im=fcitx,再用 xfce4 菜单启动 xfce4-terminal,XMODIFIERS 正确,可以使用输入法
科学之子 写了:你是怎么杀掉的?我这里通过托盘图标怎么弄都不死,难道是试验次数还不够?运气太好?

代码: 全选

$ pgrep fcitx
16318
16343
$ kill 16318
$ pgrep fcitx
$ 
科学之子 写了:您是root权限登录?输入法相关的不是本用户修改就可以吗?
这个应该改完了对所有用户生效吧,凡是输入法设置为 fcitx 的用户都不会自启

印象中 https://code.google.com/archive/p/fcitx/issues/648 这里 csslayer 讲得很清楚,可惜现在看不到了。只记得貌似是 openbox 和 XIM 发生了错误的关系
这个问题的关键是 openbox 读取到的环境变量
貌似只有在im-config(即默认)的情况下,fcitx托盘右键重启会死.
附件中有相应的环境变量文件
".自动运行"后缀表示"用"im-config"设置选择为fcitx,然后自动运行的结果,这个情况下会死掉
没有后缀的是手动启动的
"fcitx-autostart"启动的环境变量貌似和纯手动的"fcitx"一样

另外,如果我这里先打开iceweasel然后再重启fcitx,卡死概率会大大提高.
刚刚进入桌面,不进行任何操作便立即尝试时卡死概率较小.
不过手动启动或用fcitx-autostart命令启动,还没有碰到过一次死的.

Sun Mar 6 17:20:35 CST 2016补充:
上传环境变量的意思是说明,加上了那个环境变量就会死
不加上就不会死
但它从哪读取的我也不知道
但我是通过im-config设置为none来避免这个问题的.
如上设置之后就不会读取那些导致问题的变量,也没有问题现象了.
附件
fcitx环境变量.7z
(984 Bytes) 已下载 367 次
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#24

帖子 科学之子 » 2016-03-06 21:01

vickycq 写了:
科学之子 写了:也许是自动启动引起的?我这里刚刚进入桌面(此时,退出fcitx时异常概率较低),然后用终端启动fcitx,不论怎么重启fcitx都不会死.
你如何设置 fcitx 不自启?我这里 xfce4 自启中无 fcitx 相关项,.. xdg/autostart 中也没有。最后发现是通过 im-config 自动启动的。修改 /usr/share/im-config/data/22_fcitx.rc 后,终于成功取消了自启。

...然后从终端启动 fcitx,杀掉再启动,立刻崩了
:Aadterboom
说了这么多,发现我没说到要点
修改 /usr/share/im-config/data/22_fcitx.rc
上面的回帖的意思是您也试一下"im-config这个工具来图形方式禁用
而非直接修改配置文件
尤其是那个全局文件,可能和im-config做的不一样,因为使用im-config时无需root权限
im-config具体做了啥懒得跟踪
不过我用它选择了"none"之后问题就不存在了.
就像我上面回帖说的一样
头像
尚目目
帖子: 45
注册时间: 2012-06-19 23:06

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#25

帖子 尚目目 » 2016-03-10 20:20

修改 /usr/share/im-config/data/22_fcitx.rc
上面的回帖的意思是您也试一下"im-config这个工具来图形方式禁用
而非直接修改配置文件
好吧,第一眼看到这个激动死了,因为我就是Gentoo + openbox + tint2 + fcitx,最近出现这个问题的。一直不知道怎么定位,还以为是kernel精简出问题了.....

嗯,我激动的/usr/share/im[Tab][Tab][Tab],咦?怎么不补全...我没有/usr/share/im-config文件夹,更没有22_fcitx.rc这个文件....
im-config命令不存在...

那怎么解决呢?其他途径怎么阻止fcitx自启动?
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#26

帖子 vickycq » 2016-03-10 20:33

尚目目 写了:恕删......因为我就是Gentoo + openbox + tint2 + fcitx,最近出现这个问题的。...恕删
恕删......那怎么解决呢?其他途径怎么阻止fcitx自启动?
如果没有 im-config,那可能是通过其他传统途径自启的。例如 各种 xdg/autostart 目录中的 .desktop 文件
或者这个:https://wiki.gentoo.org/wiki/Fcitx#USE_flags

根据楼上的测试,可能有两个办法:
1. 使用 LXDE
2. 阻止 fcitx 自启

我自己的测试结果是:使用 LXDE 时无此问题。另外以前 @自由建客 也提到过使用 LXDE 没碰到过类似问题

先给你出个馊主意:安装一个 LXDE,看能否缓解。如果有效,将 LXDE 的部分组件替换掉,以取得与目前类似的观感
- 禁止 PCManFM 管理桌面
- lxpanel 替换为 tint2
- 窗口管理器 - 无需替换,LXDE 默认窗口管理器为 openbox
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
尚目目
帖子: 45
注册时间: 2012-06-19 23:06

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#27

帖子 尚目目 » 2016-03-10 21:34

vickycq 写了: 根据楼上的测试,可能有两个办法:
1. 使用 LXDE
2. 阻止 fcitx 自启

我自己的测试结果是:使用 LXDE 时无此问题。另外以前 @自由建客 也提到过使用 LXDE 没碰到过类似问题

先给你出个馊主意:安装一个 LXDE,看能否缓解。如果有效,将 LXDE 的部分组件替换掉,以取得与目前类似的观感
- 禁止 PCManFM 管理桌面
- lxpanel 替换为 tint2
- 窗口管理器 - 无需替换,LXDE 默认窗口管理器为 openbox
先谢谢你这么快回复和你的答案。
经小伙伴提醒,直接

代码: 全选

mv /usr/bin/fcitx{,.bak}


mv  /usr/bin/fcitx-autostart{,.bak}
发现自启动已经解决。
现在正在积极测试是否还有openbox假死。有结论再来回报。
祝好!


UPDATE 1: No, not working. :Cry
用我上面提到的方法,终端启动fcitx,状态栏restart,openbox分分钟死....
另:我破本子用Gentoo,没法换DE或者WM来尝试其他。所以
LXDE
我这实现不了。
禁止 PCManFM 管理桌面
这个我本来也没用。
现在打算重编译下fcitx试下。
上次由 尚目目 在 2016-03-10 22:04,总共编辑 1 次。
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#28

帖子 科学之子 » 2016-03-10 21:55

尚目目 写了:
vickycq 写了: 根据楼上的测试,可能有两个办法:
1. 使用 LXDE
2. 阻止 fcitx 自启

我自己的测试结果是:使用 LXDE 时无此问题。另外以前 @自由建客 也提到过使用 LXDE 没碰到过类似问题

先给你出个馊主意:安装一个 LXDE,看能否缓解。如果有效,将 LXDE 的部分组件替换掉,以取得与目前类似的观感
- 禁止 PCManFM 管理桌面
- lxpanel 替换为 tint2
- 窗口管理器 - 无需替换,LXDE 默认窗口管理器为 openbox
先谢谢你这么快回复和你的答案。
经小伙伴提醒,直接

代码: 全选

mv /usr/bin/fcitx{,.bak}
mv  /usr/bin/fcitx-autostart{,.bak}
发现自启动已经解决。
现在正在积极测试是否还有openbox假死。有结论再来回报。
祝好!
感谢积极测试与反馈.主题贴已经编辑,看是否有帮助
fcitx不是一个普通的程序,是输入法
输入法程序不仅是单纯的运行启动,还要配合相应参数才可以正常运行
比如leafpad中,如果右键选择了非fcitx的输入法,即使fcitx运行中,也还是无法响应键盘事件
科学之子
帖子: 2284
注册时间: 2013-05-26 6:58
系统: Debian 9

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#29

帖子 科学之子 » 2016-03-10 21:58

vickycq 写了:
尚目目 写了:恕删......因为我就是Gentoo + openbox + tint2 + fcitx,最近出现这个问题的。...恕删
恕删......那怎么解决呢?其他途径怎么阻止fcitx自启动?
如果没有 im-config,那可能是通过其他传统途径自启的。例如 各种 xdg/autostart 目录中的 .desktop 文件
或者这个:https://wiki.gentoo.org/wiki/Fcitx#USE_flags

根据楼上的测试,可能有两个办法:
1. 使用 LXDE
2. 阻止 fcitx 自启

我自己的测试结果是:使用 LXDE 时无此问题。另外以前 @自由建客 也提到过使用 LXDE 没碰到过类似问题

先给你出个馊主意:安装一个 LXDE,看能否缓解。如果有效,将 LXDE 的部分组件替换掉,以取得与目前类似的观感
- 禁止 PCManFM 管理桌面
- lxpanel 替换为 tint2
- 窗口管理器 - 无需替换,LXDE 默认窗口管理器为 openbox
我这里使用LXDE也会死,在iceweasel启动后重启fcitx卡死概率更大(十有八九吧)
"禁止fcitx自动运行"也是一个馊注意
看我28楼的回帖
头像
尚目目
帖子: 45
注册时间: 2012-06-19 23:06

Re: 出现openbox被fcitx弄死,试试看禁止fcitx自动运行?

#30

帖子 尚目目 » 2016-03-10 22:35

科学之子 写了: 我这里使用LXDE也会死,在iceweasel启动后重启fcitx卡死概率更大(十有八九吧)
"禁止fcitx自动运行"也是一个馊注意
看我28楼的回帖
UPDATE 2:Gentoo在/etc/portage/package.use设置fcitx的USE加上-autostart之后重新编译,貌似没有这个问题。用一阵子再回报。
回复