KDE4 的[第一个 alpha 版本](http://www.kdecn.org/announcements/announce-4.0-alpha1.php)发布了,我们可以找到 for OS X 的[二进制文件下载](http://ranger.users.finkproject.org/kde/index.php/Home)。有个问题早在 KDE 社群宣布 native 的 OS X 移植时就被提起,我现在才有空瞎说点看法。
Mac OS X 的用户可能是世界上对软件的界面一致性 (consistency) 要求最高的用户,也许是因为选择 Mac 并热爱 Mac 的人的审美喜好也类似,所以他们的嗅觉也惊人的一致而灵敏,对软件的移植而言,他们能热切地赞扬优秀的 port,比如 [Skype](http://www.skype.com/download/skype/macosx),同样也有大量移植软件因为距离 OS X 用户的界面要求太远而不被关注。常见的跨平台 GUI Toolkit: GTK+, Qt 和 wxWidgets 都是如此,除非软件本身缺少替代品,比如 WireShark 和 [aMule](http://www.amule.org/),用户才会勉强接受它。
与 Windows 开发者喜欢创造千奇百怪的界面 skin 不同,也与 Linux 开发者干脆懒得认真开发界面不同,OS X 的开发者的倾向是紧跟 Apple 的步伐。Apple 放弃 [Brushed Metal](http://indiehig.com/wiki/UI_Elements_to_Avoid) 风格,他们也立即放弃,Apple 在 Mail 里用 [Unified Aqua](http://indiehig.com/wiki/Unified_Aqua) 工具栏,他们也赶紧用,Apple 在 iLife 和 iTunes 里开始用 [Polished Metal](http://indiehig.com/wiki/Polished_Metal) 和 [HUD 窗口](http://indiehig.com/wiki/HUD),并放弃 Drawer,他们也一一复制,造就的结果就是用户口味特别刁钻,稍有点异味都能品出来,比如 Shiira 的开发者最近伴随 2.0 版本的发布提供了 [HUD Framework](http://shiira.jp/hmblkappkit/en.html),但却[有人声称](http://dev.lipidity.com/apple/shiira-2-released-offers-hud-framework) CSSEdit 的 HUD 窗口“ blow these away by a mile”——就是这么苛刻,不过,如果你也是个对 GUI 设计精益求精的开发者,你就能习惯它。
大多数的跨平台 GUI Toolkit 最大的问题在于,它们能达到的只能是所有平台支持的“最大公约数”,而永远无法在任意一个平台下发挥最大效能,所以它们只好设置自己的 Design Guidelines,为了让不同平台下都呈现相同的外观和习惯。它们可能去为了 [Apple Human Interface Guidelines](http://developer.apple.com/documentation/UserExperience/Conceptual/OSXHIGuidelines/XHIGIntro/chapter_1_section_1.html) 乃至 [indieHIG](http://indiehig.com/wiki/Main_Page) 去修改自己的界面设计习惯吗?恐怕很难。
而且 KDE 的习惯又是以复制 Windows 为主,包括 File Choose Dialog 的设计,OK, Cancel Button 的位置,等等,从而就更难让 OS X 用户满意了。
事实上,跨平台的 GUI Framework 从来就没有达到过真正的跨平台的接受度,一般都只能在一个平台下拥有大量用户,其他平台下则寥寥无几。我觉得还是在软件内部封装一个跨平台 GUI 层,根据不同的需求在不同平台下调用不同的框架来实现会比较好,比如 vim 和 emacs 的做法就是如此。
我倒是觉得KDE更接近于复制OSX,比如global menu bar之类的。
跨平台的gui framework基本都sucks,比如Qt在OSX下难看,gtk在Windows下难看,wx在哪儿都难看。最好看的反而是SWT。
说KDE更接近OSX还有一个理由是他的GUI程序互相之间的交互密切,比如KMail, KNote这些的,类似OSX下Mail, Address Book, iCal之间互相交互。
刚才没想起来,ft
才4.0的alpha1,jjgod大侠就这么苛刻的要求了,hehe。
至于HIG,我想对于Qt/KDE也是可能的。
http://doc.trolltech.com/qq/qq20-hiviews.html
只不过跨平台和平台特性本身就是一种矛盾。
但我觉得KDE on Mac OS X以及未来的KDE on Windows的存在,本身就是一种精神的体现。不知道Mac OS X上有没有一个opensource应用程序列表,可以对应KDE各个应用所提供的功能。
还有就是KDE on Mac OS X以及未来的KDE on Windows,可以大大的方便原来使用KDE的用户,或者喜爱某些KDE应用的朋友在多个平台上使用同一应用,对于他们这是再方便不过的事情了。不是么?
fishy: 我同意 SWT 是做得最好 (有趣的是,也是最 light-weight 的) 的一个 framework..
Cavendish Qi: 我还是很喜欢一些 KDE based 的软件的,Konsole、Kopete 和 Kile 就是其中几个非常出色的,能在 OS X 中见到它们会很好。
你给出的链接里似乎只是涉及 HIView 的使用,但 HIG 关注的其实不是这个,而更偏向于一种界面风格,有点像我们说 Windows 下边的程序有的时候会模仿 Office 2003 的风格,Visual Studio 2005 的风格。Cocoa 程序的风格也有其鲜明的特色,主要就是在 http://indiehig.com 有比较详细的介绍。像链接中给出的 web 浏览器的示例,两个工具栏按钮就很明显的与界面整体风格不协调。
有个在 Carbon 上封装,但不是跨平台的 C++ 框架是 Nano:
http://www.refnum.com/products/nano/
这是目前我觉得做得比较好的一个。
konsole, kopete应该这次kde 4 on mac就可以看到了吧,kile好像不在kde4的核心包里,估计以后也是没有问题的。
后来想了想,我帖的链接和你说的确实不同。这里还有一个链接,也许只是解决了一个小问题:
http://doc.trolltech.com/4.3/qt4-3-intro.html#new-widgets-and-desktop-integration-enhancements
quote:我觉得还是在软件内部封装一个跨平台 GUI 层,根据不同的需求在不同平台下调用不同的框架来实现会比较好,比如 vim 和 emacs 的做法就是如此。
還是用一個庫對各個平的庫做相同的封裝比較好.
發者使用這個庫,在各平臺上都可以有native的look
来看一下所写,欢迎回访
(若能回访请留下博客地址,不胜感激)
听景777-属于个人的Blog
地址1 http://www.xsblog.com/u/natinne2/
地址2 takepul.googlepages.com/2.htm
tingjing777@gmail.com
刚来,很好奇,看不太懂:P
事实上楼主考虑的有点片面了.苹果用户对gui是很挑剔,但他们不是一成不变的。mac os x的界面也在变化,为什么他们就能够接受呢?关键是你做的能不能比苹果原有的界面更好。如果你做到了,苹果的用户会转而支持你。至于最后一段所提到调用不同框架的gui,不就是wxwidgets吗?我还是更欣赏qt的实现方式,那样可以保持各平台的效果都一样。
我赞同楼主的意见。在MAC下使用软件,界面的统一是表,使用习惯才是最重要的。WIN下软件习惯性的在面板上放N多个按钮,但M下由系统到系统内置的软件,统一的都是面板上按钮少但静,所有功能都能从MENU BAR获得。至于右键,基本上可以忽略。MAC下三方软件大多也遵循这个思路,当然,如果不遵循这个思路必然会受到MAC用户的抵制。以MAC下的飞信为例,无可非议是个不错的软件,但它的操作几乎都在面板上完成,MENU BAR没有充分的应用。QQ也存在同样的问题,大部分功能放在了 右键 中实现。明显是不合群的。