ArchLinux下XFCE的一个问题修复:thunar加载的环境变量不正确
家里的电脑上,安装了Arch32与Arch64。不记得以前做过什么操作,
导致在Arch32下,Thunar启动后,其环境变量缺失很多内容。
主要在PATH及LD_LIBRARY_PATH几个关键变量缺失,导致很多功能使用不便
经过几天的摸索,终于找到原凶。
现象是:Thunar启动后,环境变量缺失很多
定位经历:由于同时有Arch32与Arch64,因此可以反复启动对比。
首先找到线索:
1.通过进程树对比,有问题的环境下,Thunar启动后的父进程是Systemd
2.而正常环境下,Thunar启动后的父进程是xfce4-session
同时查看其启动参数,得到信息
1.有问题的环境下,Thunar启动参数是 --daemon
2.正常环境则会带--sm-id xxxxxxxxxx-yyyyyyyyy字样
从XFCE4启动流程可知,xfce4-session负责拉起包括xfdesktop/xfce4-panel/thunar等多个进程
因此问题原因推进到Thunar的启动方式不正确。
定位手段不足,反复查看systemd等的系统日志,也没查找到有启动Thunar失败的提示。
无奈去查xfce-session的代码,发现其提供调试手段,环境变量中有XFSM_VERBOSE时,会记录日志到当前用户目录下
在/etc/profile中增加变量XFSM_VERBOSE后,对比问题环境、正常环境的日志,发现在在XFSM模块加载初始会话时,就缺少Thunar项
原因定位到了,就是初始会话中缺少Thunar。
xfce-session启动时,先根据初始会话,依次加载启动每个APP。
加载完成后,会检查XFCE4几个关键组件是否启动,如果没有启动,则以Failsafe方式启动缺失的组件。
Thunar正是由此启动起来的。
修复办法,首先在问题环境中,进系统后打开“启动与会话”,然后删除相应缺省会话,重启发生不生效!
想了一下,XFCE4在正常退出时,会自动保存当前会话,因此操作就没有作用。
最后还是得手工来操作:进入正常环境,将问题环境的分区mount上来,找到HOME目录下进入到
~/.cache/sessions,删除xfce相应的信息
再进入问题环境,可以发现环境已经修复。