「こんなきれいな星も、やっぱりここまで来てから、見れたのだと思うから。だから・・もっと遠くへ・・」

某次Archlinux升级后产生的诡异问题及解决过程

前两天升级了一下arch,然后就产生了一个诡异问题:
dolphin中选中某个文件(文件名出现“减号”时),文件名会突然消失……
正常情况: 选中后文件名消失了:

发到archlinux贴吧问了一下,有网友表示应该只是文件名用白色显示了,可能是widget style的问题。 我想了一下觉得很靠谱,可能是oxygen-transparent出问题了,于是到系统设置里把style改回oxygen。 结果打开的那个dolphin窗口立即好了,但更诡异的问题出现了: 新开的dolphin窗口依然会出现那个诡异问题。

经过若干实验,发现在系统设置里改style确实会使所有已经打开的窗口正常,但对新开的窗口就无效了…… 实在猎奇。 QQ上问了一下wzy大神,他表示可以考虑用命令行启动一个dolphin,看错误信息。

于是我实验了一下,确实爆出了一堆错误信息。 先发现是,好像dolphin使用了某个奇怪的本地style,那个style好像残缺不全,一堆图片都不存在,于是报错了。 另一个发现是,dolphin好像用的是gtk的风格? 但dolphin明明是qt程序啊…… 我一开始怀疑是不是kde4_gtk这个包的问题(这个包作用是统一gtk和qt程序的外观),于是先把那个本地的残缺style删了,然后把kde4_gtk这个包给卸了,但再开dolphin,发现虽然没有那堆“图片不存在”的错误信息了,但诡异问题依然没有消失。 而且,dolphin、kate和其他qt程序的界面一下都变的很丑,变成了丑到爆的默认gtk风格。

于是,问题比较明确了,dolphin等qt程序都因为某些不明原因,使用了默认gtk风格而不是qt风格,而那个gtk风格似乎是有问题的(wzy给了一个bug report链接,表示dolphin使用默认gtk风格时有时确实会发生文件名变白这个问题)。

我试图强行把那个默认gtk风格用oxygen覆盖掉,于是去查主题包默认存放位置,却偶然看到一个arch wiki上的求助贴,那个帖子虽然问题内容和我不太一样,但楼主表示最后发现是一个配置文件错误,删掉~/.config/Trolltech.conf让程序自己生成一个新的后就正常了。 我一下理解了我的诡异问题的原因: 把风格改成oxygen后,已经打开的程序界面恢复正常,说明oxygen风格本身没有被损坏;而新开程序依然使用默认gtk风格,说明很可能是配置文件让程序这么做的。

于是我删掉qt的配置文件~/.config/Trolltech.conf,然后重启。 发现dolphin等qt程序均恢复正常。 估计是我很久没升级,然后从很旧的版本直接升级到最新,软件源维护者没考虑过从这么老的版本升级,忘了更新某个配置文件导致的。 这个问题看上去算解决了,但事情其实没结束……

几天后,我突然发现,在qt程序内没法使用输入法了! firefox、gedit等gtk程序中输入法使用正常,但dolphin、kate等qt程序就没法用了。 而且从终端启动的qt程序,输入法使用正常。 因为.bashrc里export了输入法相关的参数,我怀疑是kde启动时可能没有正确设置qt的输入法(但正确设置了gtk的输入法),所以从kde中启动的qt程序就无法使用输入法了。

一开始怀疑是.xprofile或者.xinitrc之类的配置文件的问题,但各种修改后都没用。 最后也是偶然看到一个帖子,里面提到用qtconfig-qt4设置qt程序的输入法。 我立刻明白真相了,差点一口血喷出来…… 尼玛我当时装系统时明明已经用qtconfig-qt4设置过输入法了,但为啥现在突然没用了? 因为前两天修那个诡异问题时候我把qt的配置文件给删了!!! 一口老血喷出来啊…… 打开qtconfig-qt4,发现输入法果然是默认的xim而不是fcitx,于是改回fcitx,重启,问题解决。

果然arch一升级就要折腾…… arch虽然软件源确实十分丰富,各种软件都找得到,但人性化方面实在略xx…… >_< 哪天再滚动升级滚挂了还是直接转kubuntu好了…… (不用ubuntu是因为kde确实比gnome好用一些。。)