昨天我说要尽量使用Qt开发的程序,其中一个原因是我的绝大部分Gtk开发的程序在KDE环境下都会崩溃。 听风同学认为我人品一定有问题。还好有Rachel来帮我证明我人品没有问题(回到请你吃饭,太老土了,请你聊天吧)。
为了证明我是冤枉的,我今天特意花了半天时间来看看到底是怎么回事。
首先root账号在KDE环境下是可以运行Gtk程序的,这说明不应该是程序或者动态库的问题。同时我创建了另外一个普通账号,在KDE环境下运行Gtk程序也是没有问题的,这也排除了动态库权限的,实际上从strace跟踪的结果来看,没有发现权限问题。
因此只有可能是我目前账号的一些默认配置出了故障。因为系统不停的升级,所以也搞不清到底是升级或者安装了哪个包出了问题。于是首先把~/下面的所有与Gtk相关的隐藏文件全部移走。再运行Gtk程序,一切正常,看了真的是我的配置文件出了。
于是一个一个排查,最后确定是~/.gtkrc-2.0-kde这个文件的问题。内容如下:
$ cat .gtkrc-2.0-kde
# This file was written by KDE
# You can edit it in the KDE control center, under "GTK Styles and Fonts" include "/usr/share/themes/Qt/gtk-2.0/gtkrc"
style "user-font" {
font_name="ae_Arab 9"
}
widget_class "*"
style "user-font"
gtk-theme-name="Qt"
gtk-font-name="ae_Arab 9"
从上述文件的注释来看,这个配置文件来自Gtk Styles and Fonts配置选项。
我找到这个配置选项,更改了几个地方,发现是Gtk样式选项的问题,也就是不能选择Qt作为样式引擎,其他的都可以,具体可以看下面这张图片。
这个功能是由gtk-qt-engine程序提供的,我目前安装的版本是0.8的修订版,看了是这个程序的BUG呀。
So,听风同学,我可证明了我的清白哟。