让Firefox和KDE更加协调

csslayer | 2010/12/11

firefox不可否认是一个很优秀的浏览器(也是我的默认浏览器),毕竟缺少Qt界面的好用的浏览器,于是还是只能在流行的firefox,chromium,opera之间选择。

其实这是一个在网上被很多人讲过的问题,由于firefox在linux下面是使用gtk作为界面绘制(虽然也不是传统的gtk),似乎对gnome更加友好,默认的firefox在KDE下有一下几大问题。

1、界面不够协调,不得不说我觉得oxygen比起gnome默认的clearlooks要强不少,但是firefox想用上oxygen的主题,主要还有两道鸿沟,第一oxygen是qt的界面主题,而gtk不支持qt的主题。第二是firefox对gtk的支持也同样不完美,比如窗口背景是黑色,菜单文字有些主题竟然不变。

2、不使用KDE的文件关联,打开文件窗口。最最无语的就是文件关联,如果不安装gnome-mime-data等包,甚至无法双击方便打开文件,而安装之后,也有很多问题。关联和KDE不统一,导致pdf文件双击时只能用gimp打开等等窘事。

这里实在是要感谢openSUSE的这个项目,Firefox-KDE-OpenSUSE,openSUSE说起来是个比较亲KDE的发行版,于是也间接导致了这个项目的诞生。openSUSE用户直接安装就好,Archlinux的用户的话,可以从AUR上安装这个包或者用我和bfo提供的源(在aur页面上有链接),至于其他发行版我不太清楚情况,据体验fedora的firefox似乎也还不错。

这个openSUSE的补丁能够带来以下特性,打开文件窗口使用KDE的原生窗口(当然flash内部的打开文件是不行的),系统代理使用KDE,按照KDE设置检测默认浏览器,使用KDE文件关联,Plasma消息提示。其实openSUSE的patch也同时兼顾的gnome,不过既然默认的firefox已经工作的挺好,gnome用户其实没什么必要用这个patch了。

功能的方面就是这个了,界面上推荐两个方案一起使用,一个是KDE look上的Oxygen KDE,另外一个是gtk-oxygen-engine。Oxygen KDE实在也是一个及其强悍的项目,已经从最初的固定Color Scheme到完全支持KDE的Color Scheme(3.0系列)。对于Firefox 3.6的用户,推荐这个版本。虽然现在已经beta8了,但是由于3.0系列仅仅声明支持Firefox 4,beta4之后的版本由于加入了动画,导致菜单的显示会有些不正确。

gtk-oxygen-engine是一个不依赖Qt,而是按照oxygen绘制的方法重新实现的一个主题,gtk用户也可以试试看。同时用上这两个的话,真的已经看不出原来firefox的样子了。最后给个截图:(截图中还用了tabs on top,personal menu等插件调整界面)

gitorious.org/firefoxkdeopensuse
Tags:

8 FEEDBACKS

  1. 更新好勤快啊。 gtk-oxygen-engine不错,通用性挺好……除了元件大小不一样之外区别真的不大了。

  2. 要是能把标题栏隐藏掉就更好了~

  3. 我曾经使用 gnome,卸载了 gedit,然后在火狐里双击纯文本文件使用 Oooo 打开了。。。

  4. 不知道是不是因为安装了这些,我总觉得kde中的ff比较卡,特别是启动的时候,还有页面很长的时候

  5. @babydragon 确实在KDE里面没在Gnome里流畅,主要跟待被切换出来的页面的复杂程度有关。这也是我转投Chrome的原因之一。我觉得慢的一个可能的原因是每次切换标签后firefox会重新绘制一遍新显示出的标签,而Chrome似乎不会,所以在我这里Chrome切换标签比FF流畅很多。

  6. wm

    Fx有QT的吧,似乎…

  7. @wm 有,还不完善而已。

  8. stecue

    Oxygen界面俺怎么都看不习惯。我直接使用QtCurve主题,所有Qt和GTK程序,包括OOo/Filezilla之类全部都有统一外观,当然firefox更不在话下了。

Leave a Reply

Your email address will not be published. Required fields are marked *

Note: Commenter is allowed to use '@User+blank' to automatically notify your reply to other commenter. e.g, if ABC is one of commenter of this post, then write '@ABC '(exclude ') will automatically send your comment to ABC. Using '@all ' to notify all previous commenters. Be sure that the value of User should exactly match with commenter's name (case sensitive).