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相应的信息
再进入问题环境,可以发现环境已经修复。
ArchLinux下XFCE的一个问题修复:thunar加载的环境变量不正确的更多相关文章
- Excel催化剂开源第3波-修复ExcelCom加载项失效问题及WPS可调用Com加载项的方法
为了还原一个干净无侵扰的网络世界,本文将不进行大规模地分发,若您觉得此文有用,不妨小范围地分享到真正有需要的人手中 功能概述 修复ExcelCom加载项常见问题,如每次需重新勾选COM加载项或COM加 ...
- 使用RequireJS并实现一个自己的模块加载器 (一)
RequireJS & SeaJS 在 模块化开发 开发以前,都是直接在页面上引入 script 标签来引用脚本的,当项目变得比较复杂,就会带来很多问题. JS项目中的依赖只有通过引入JS的顺 ...
- 在Qt Quick中一个简单Hello World加载过程
Qt5基本类图: QQmlEngine QQmlEngine类提供了一个QML引擎,用于管理由QML文档定义的对象层次架构,QML提供了一个默认的QML上下文(根上下文,获取函数QQmlEngi ...
- Android打造(ListView、GridView等)通用的下拉刷新、上拉自动加载的组件
原文 http://blog.csdn.net/bboyfeiyu/article/details/39253051 前言 下 拉刷新组件在开发中使用率是非常高的,基本上联网的APP都会采 ...
- ListView下拉刷新,上拉自动加载更多
下拉刷新,Android中非常普遍的功能.为了方便便重写的ListView来实现下拉刷新,同时添加了上拉自动加载更多的功能.设计最初是参考开源中国的Android客户端源码.先看示例图. ...
- XRecyclerView:实现下拉刷新、滚动到底部加载更多以及添加header功能的RecyclerView
介绍: 一个实现了下拉刷新,滚动到底部加载更多以及添加header功能的的RecyclerView.使用方式和RecyclerView完全一致,不需要额外的layout,不需要写特殊的adater. ...
- 【模块化编程】理解requireJS-实现一个简单的模块加载器
在前文中我们不止一次强调过模块化编程的重要性,以及其可以解决的问题: ① 解决单文件变量命名冲突问题 ② 解决前端多人协作问题 ③ 解决文件依赖问题 ④ 按需加载(这个说法其实很假了) ⑤ ..... ...
- ie6下a标签click事件无法触发加载iframe
ie6下a标签click事件无法触发加载iframe,把a换成span或者别的,就可以了
- 定义了一个UIImageView如何使加载的图片不会失真 UIImageView的Frame值是固定的
定义了一个UIImageView如何使加载的图片不会失真 UIImageView的Frame值是固定的 UIViewContentModeScaleToFill, 缩放内容到合适比例大小 UIVie ...
随机推荐
- Laravel5学习
[1]缓存问题 laravel中使用的配置文件,都会放在config目录下面,当变更某个参数的时候,如果发现不生效,可以在命令行下面执行 php artisan config:clear 命令才清除 ...
- selenium-java爬虫实现
推荐的网站学习网站 1.官方文档 http://www.seleniumhq.org/docs/ 2.selenium多线程 http://www.cnblogs.com/dingmy/p/34380 ...
- 校内题目T2691 桶哥的问题——送桶
这是一道校内题目,但迷路的蒟蒻们同样被欢迎来此学习QWQ 题目描述: 题目背景 @桶哥本校——皎月pks大佬OrzOrz 买完了桶,桶哥要去送桶. 题目描述 桶哥买了nn个桶, 他要将这些桶送去nn个 ...
- Linux本机和远程服务器之间文件的上传和下载 rz sz
tar zxvf lrzsz-0.12.20.tar.gz 解压安装包 下载地址:链接:https://pan.baidu.com/s/1KMS1QlyOhpXiYeaWdNBAyw 提取码:08 ...
- [易学易懂系列|rustlang语言|零基础|快速入门|(4)|借用Borrowing]
[易学易懂系列|rustlang语言|零基础|快速入门|(4)] Borrowing 继续讲讲另一个重要的概念:借用(borrowing), 什么是借用? 我们先来看前一文章([易学易懂系列|rust ...
- bootstrap-table(2)问题集
参考;https://www.cnblogs.com/landeanfen/p/4993979.html 1.分页参数sidePagination 如果是服务端分页,返回的结果必须包含total.ro ...
- 随机发送n位数字+字母的验证码
''' 随机发送n位数字+字母的验证码 ''' import random def get_verified(length): code = '' for i in range(length): nu ...
- 费用流 Dijkstra 原始对偶方法(primal-dual method)
简单叙述用Dijkstra求费用流 Dijkstra不能求有负权边的最短路. 类似于Johnson算法,我们也可以设计一个势函数,以满足在与原图等价的新图中的边权非负. 但是这个算法并不能处理有负圈的 ...
- java数据结构--array与ArrayList的区别
ArrayList 内部是由一个array 实现的. 如果你知道array 和 ArrayList 的相似点和不同点,就可以选择什么时候用array 或者使用ArrayList , array 提供 ...
- ip addr详解
Windows上查看IP地址是ipconfig, Linux上是ifconfig,但是Linux上还有一个命令叫ip addr可以查看IP地址. ip addr : lo: <LOOPBACK, ...