Gnome 3 相关整理(一)
Gnome背后的故事Linux实际上是以UNIX为模板的,它继承了UNIX内核设 计精简、高度健壮的特点,无论系统结构还是操作方式也都与UNIX无异。强大的命令行界面始终是它们的基础,在 上个世纪八十年代中期,图形界面风潮席卷操作系统业界,麻省理工学院(MIT)也在1984年与当时的DEC公司合作,致力于在UNIX系统上开发一个分散式的视窗环境,这便是大名鼎鼎的“X Window Sys
Linux实际上是以UNIX为模板的,它继承了UNIX内核设 计精简、高度健壮的特点,无论系统结构还是操作方式也都与UNIX无异。 强大的命令行界面始终是它们的基础,在 上个世纪八十年代中期,图形界面风潮席卷操作系统业界,麻省理工学院(MIT)也在1984年与当时的DEC公司合作,致力于在UNIX系统上开发一个分 散式的视窗环境,这便是大名鼎鼎的“X Window System”项目。不过,X Window(请注意不是X Windows)并不是一个直接的图形操作环境,而是作为图形环境与UNIX系统内核沟通的中间桥梁,任何厂商都可以在X Window基础上开发出不同的GUI图形环境。
由于必须以UNIX系统作为基础,X Window注定只能成为UNIX上的一个应用,而不可能与操作系统内核高度整合,这就使得基于X Window的图形环境不可能有很高的运行效率,但它的优点在于拥有很强的设计灵活性和可移植性。X Window从逻辑上分为三层:最底层的X Server(X服务器)主要处理输入/输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将它交给X Client(X客户端)作出反馈,而由X Client传来的输出信息也由它来负责输出;最外层的X Client则提供一个完整的GUI界面,负责与用户的直接交互(KDE、Gnome都是一个X Client),而衔接X Server与X Client的就是“X Protocol(X通讯协议)”、它的任务是充当这两者的沟通管道。
在 上个世纪九十年代中期,以开源模式推进的Linux在开发者中已经拥有广泛的影响力。尽管X Window已经非常成熟,也有不少基于X Window的图形界面程序,但它们不是未具备完整的图形操作功能就是价格高昂(如CDE),根本无法用于Linux系统中。如果Linux要获得真正意 义上的突破,一套完全免费、功能完善的GUI就非常必要。1996年10月,图形排版工具Lyx的开发者、一位名为Matthias Ettrich的德国人发起了KDE(Kool Desktop Environment)项目,与之前各种基于X Window的图形程序不同的是,KDE并非针对系统管理员,它的用户群被锁定为普通的终端用户/。
KDE项目发起后,迅速吸引了一大批高水平的自由软件开发者,这些开发者都希望KDE能够将Linux系统的强大能力与舒适直观的图形界面联结起来,创建 最优秀的桌面操作系统。
KDE采用GPL规范进行发行,但底层的基础 Qt当时却是一个不遵循GPL的商业软件,这就给KDE上了一道无形的枷锁并带来可能的法律风险。 一大批自由程序员对KDE项目的决定深为不满,它们认为利用 非自由软件开发违背了GPL的精神,于是这些GNU的狂热信徒兵分两路:其中一部分人去制作Harmonny,试图重写出一套兼容Qt的替代品,这个项目 虽然技术上相对简单,但却没有获得KDE项目的支持;另一路人马则决定重新开发一套名为“GNOME(GNU Network Object Environment)”的图形环境来替代KDE,一场因为思想分歧引发的GUI之战开始了。
GNOME 项目于1997年8月发起,创始人是当时年仅26岁的墨西哥程序员Miguel De Icaza。关于GNOME的名称有一个非常有趣的典故:Miguel到微软公司应聘时对它的ActiveX/COM model颇有兴趣,GNOME(Network Object Model )的名称便从此而来。GNOME选择完全遵循GPL的GTK图形界面库为基础,因此我们也一般将GNOME和KDE两大阵营称为GNOME/GTK和 KDE/Qt。与Qt基于C++语言不同,GTK采用较传统的C语言,
2004且此时两者的技术特点非常鲜明:GNOME讲究简单、高效,运行速度比KDE更快;KDE则拥有华丽的界面和丰富的功能,使用习惯也与微软 Windows较类似。
GNOME在2006年以后, 以超越Mac OS为目标,而KDE也在不断改进。走向融合:互操作、互相借鉴设计、对硬件厂商更大的话语权,为用户提供体验选择。
http://www.hudong.com/wiki/GNOME
GNOME 是一种支持多种平台的开发、桌面环境, GNOME 包含了Panel、桌面及一系列的标准桌面工具和应用程式,可以运行在包括Linux、Solaris、HP-UX,BSD和Apple's Darwin系统上。是一款功能强大的图形接口工具。
是一个桌面环境,而不仅仅是窗口管理器,还包含了许多应用,如Eolution、GIMP、OpenOffice等。
GNOME - 目标
引自GNOME网站:
GNOME计划提供了两个东西:GNOME桌面环境,一个对最终用户来说符合直觉并十分吸引人的桌面;还有GNOME开发平台,一个能使开发的应用程序与桌面其它部分集成的可扩展框架。
GNOME桌面主张简单、好用和恰到好处,因此GNOME开发中有两点很突出:
可达性——设计和建立为所有人所用的桌面和应用程序,不论其技术技巧和身体残疾。
国际化——保证桌面和应用程序可以用于很多语言。
<pic>
为何如此炫?
分析一下Gnome的架构
GNOME桌面由许多不同的项目构成,部分最重要的如下所示:
ATK——可达性工具包
Bonobo——复合文档技术
GObject——用于C语言的面向对象框架
GConf——保存应用软件设置
GNOMEVFS——虚拟文件系统
GNOMEKeyring——安全系统
GNOMEPrint——GNOME软件打印文档
GStreamer——GNOME软件的多媒体框架
GTK+——构件工具包
Cairo——复杂的2D图形库
HumanInterfaceGuidelines——Sun微系统公司提供的使得GNOME应用软件易于使用的研究和文档
LibXML——为GNOME设计的XML库
ORBit——使软件组件化的CORBAORB
Pango——i18n文本排列和变换库
Metacity——窗口管理器
GNOME - 主要GNOME应用软件
英文维基有更加完整的GNOME应用软件列表,其中主要的包括:
Abiword——文字处理器。
Epiphany——网页浏览器。自从GNOME2.14起Epiphany取代Galeon成为缺省浏览器。
Evolution——联系/安排和e-mail管理。
Gaim——即时通讯软件。
gedit——文本编辑器。
TheGimp——高级图像编辑器。
Gnumeric——电子表格软件。
GnomeMeeting——IP电话或者电话软件。
Inkscape——矢量绘图软件。
Nautilus——文件管理器。
Rhythmbox——类型AppleiTunes的音乐管理软件。
Totem——媒体播放器。
GNOME - 版本历史
版本 | 日期 | 说明 |
1997年8月 | 发起GNOME开发 | |
1.0 | 1999年3月 | 第一个主要GNOME版本 |
1.0.53 | 1999年10月 | "October" |
1.2 | 2000年5月 | "Bongo" |
1.4 | 2001年4月 | "Tranquility" |
2.0 | 2002年6月 | 基于GTK2的重要升级,并引入了人性化界面指导 |
2.2 | 2003年2月 | 多媒体和文件管理器的改进 |
2.4 | 2003年9月 | Epiphany,可达性支持 |
2.6 | 2004年3月 | 转向spatial文件管理器,新文件对话框 |
2.8 | 2004年9月 | 改进可移动设备的支持,增加Evolution |
2.10 | 2005年3月 | 一般性优化,新applets(设备挂载和卸载),增加Totem和Sound Juicer |
2.12 | 2005年 9月 | 改进了Nautilus;改进了在程式之间的剪切/粘贴功能以及加强了对freedeskop.org 的集成。 增加了:Evince PDF 文件阅读器;开始菜单编辑器;keyring manager与管理工具。 建基于支持Cairo的GTK 2.8 |
2.14 | 2006年 3月 | 性能提升。增加:Ekiga 原先叫做GNOME Meeting,GNOME 的语音和 IP 视频客户端;任务栏搜索工具; Pessulus 锁定管理器(允许管理员方便地禁用 GNOME 桌面的特定特性);快速的用户切换; Sabayon 配置编辑器(允许管理员在实时和互动的 GNOME 会话中设置用户配置文件). |
2.16 | 2006年 9月 | 性能提升。新增:Tomboy 智能的wiki笔记本程序;Baobab 磁盘存储份额管理; 屏幕保护的全屏预览支持; Totem 有一些轻微地改进;改进了 Nautilus;集成了支持笔记本的电源管理功能; Metacity添加compositing支持; 新的图标主题。基于GTK+2.10库,新的打印对话框和它的API. |
2.22 | 2008年3月 | Epiphany浏览器换用WebKit引擎;Evince文档浏览器内部转换效应; Cheese可用网络摄像头拍摄照片和记录视频, 并可应用特效。多媒体方面,Totem能搜索和播放YouTube视频,连接到MythTV服务, 观看录像或实时TV。 Rhythmbox能利用FM无线电收听器,集成进新的歌词网站,改进了Podcast feed支持。 提供了独立的Flash播放器, 支持从文件浏览器中预览flash |
2.24 | 2008年9月 | 更好的 GNOME panel theming, integration of 书签和浏览记录for GNOME-wide access, and new applet library for GNOME panel, 新版Ekiga崭新的用户界面,SIP支持, Empathy即时通讯客户端 采用Telepathy通讯框架,Nautilus可以选择纵行和列表视图, GnomeVFS到GIO的移植部分完成。 |
2.26 | 2009年3月 | 新刻录工具Brasero,简单文件共享,媒体播放器改进,提供多显示器和指纹识别支持。 |
2.28 | 2009年9月 | 加入GNOME蓝牙模块;改进时间跟踪器;改进即时聊天工具Empathy;改进Epiphany Web 浏览器; 媒体播放器增加DVD回放功能;网络摄像头工具Cheese;Evince文档查看器新增批注功能; 声音控制程序增加淡入淡出控制支持;Orca 屏幕阅读器;WebKit 辅助功能支持等。 |
2.30 | 2010年3月 | Nautilus文件浏览器、Empathy即时通信、便签、Evince PDF阅读器、Time Tracker、Vinagre VNC客户端 和Epiphany浏览器的改进。iPod and iPod Touch设备可通过libmobiledevice在gvfs支持。使用GTK+ 2.20. |
2.32 | 2010年9月 | 2010 增加Rygel and GNOME颜色管理器、 Nautilus文件浏览器、Empathy即时通信、便签、 Evince PDF阅读器和其他组件的改进。 |
3.0 | 2011年4月 | GNOME Shell的引进。拥有一个重新设计的、具有更简练更集中的选项的框架。 |
3.2 | 2011年9月[2] | 标题栏、按钮和其它空间变矮;在右下角的通知区域现在包含了一个计数器; 高亮效果指示一个已经运行的程序更加明显;在用户菜单中;通知可以在聊天状态中独立配置; 不再假定是 Evolution ,日历下拉菜单中的程序现在可以自定义; 电池电量状态使用一个条显示; 焦点跟随光标处理得到了改进。 |
Metacity
Metacity(发音的押韵与“capacity”类似,重音在第二个音节上[1])曾经是GNOME桌面环境下默认的复合窗口管理器。[2] Metacity的开发工作是由Havoc Pennington发起的,并且它以GNU General Public License这个许可协议授权分发。
在GNOME 2.2正式引进Metacity之前,GNOME陆续使用了Enlightenment和Sawfish作为它的窗口管理器。虽然Metacity是GNOME工程的一部分来并且被设计为集成进GNOME桌面,但它并不需要GNOME才能运行。同样GNOME也可以使用各种不同的窗口管理器,只要它们支持ICCCM规范。
Metacity由GTK+实现,这使得它可以主题化并与其他GTK+应用程序相融合。
Metacity的理念是简单和适用而非新颖和花哨
2011年,Gnome 3 发布,Metacity被mutter代替。
Mutter最初是由英特尔的Moblin project平台开发。 英特尔在GNOME 2 的采用时Metacity窗口管理器,并结合程式库Clutter使其有OpenGL的功能,让速度加快。
Clutter和插件主要以JavaScript与C语言写成。
更具体的说,Unity,是Ubuntu尝试新科技的第一步。此前Ubuntu有用Clutter这个3D图形库构建其Netbook版本的Launcher,不过效果平平,根本不足以打造一个好的交互桌面。
这次,Ubuntu不再直接使用Clutter了,而是使用了GNOME 3.0的核心装备:Mutter。
“GNOME 3.0的核心不是GNOME Shell吗?Mutter又是什么?”
从技术角度来讲,Mutter才是GNOME 3.0的核心,而GNOME Shell只是基于Mutter的一个插件而已~
Mutter是基于Clutter开发,由Metacity改来的窗口管理器,就跟Compiz一样,Mutter仅支持3D加速。实际上Mutter已经被应用在一些地方了,比如之前的Moblin,也是基于Mutter窗口管理器的。
所以简单的说,Ubuntu Unity是Ubuntu首次使用Mutter作为其窗口管理器,目标实现更多有意思的功能的一个桌面Shell。理所当然的,因为“Unity”也是Mutter的插件,从这个角度来看,它与GNOME Shell是兄弟关系。
http://baike.baidu.com/view/2838495.htm
clutter的介绍
clutter感觉有点像flash,通过ClutterTimeline 和ClutterBehaviour 控制对象的行为。clutter用C语言编写,采用与GTK类似的面向对象编程。clutter的核心概念是:stage(画布,舞台)和actor(演 员)。莎士比亚说“全世界是一座舞台,所有的男人女人不过是演员”,这句话很好的表现了这点。画布相当于一个window,或者framebuffer, 是actor的舞台。所有的clutter程序都需要创建一个stage,它是最顶层的对象,也是一个container(容器),让其他的actor在 其上面表演。actor们本身都是2D对象,是平面的,不过clutter允许我们对这些actor在3D空间进行操作,比如绕着x,y,z轴旋转。 clutter除了可以让我们在3D空间操作2D的actor之外,最有特色的就是可以使用时间线,通过多条时间线的协同使用,我们可以很容易创造出“有生气”“诱惑力”的程序。当然,clutter也会处理传统的键盘、鼠标事件。基本 clutter 程序设计与stage的基本概念
#include<clutter/clutter.h> clutter_init() clutter_stage_get_default() clutter_actor_show() clutter_container_add() clutter_main() 开始一个clutter程序,使用clutter_init()函数初始化。使用clutter_stage_get_default()创建一个stage。也可以使用GtkClutterEmbed widget在一个GTK+窗口中使用clutter。 ClutterStage从ClutterActor对象派生,所以很多ClutteActor的属性都可以用在stage上,例如调用clutter_actor_show()函数显示stage。 ClutterStage也操作ClutterContainer,允许使用clutter_container_add()函数添加子actors。调用clutter_main()函数开始一个main loop,让stage“活”起来。stage
每个clutter应用程序都至少包括一个ClutterStage。这个stage容纳Actors(如rectangles,images,text等)。stage widget
GtkClutterEmbed widget允许把ClutterStage放到一个GTK+窗口中。使用gtk_clutter_embed_new()函数创建一个实例,再用 gtk_clutter_embed_get_stage()函数从GtkClutterEmbed对象创建一个ClutterStage实例。 使用GtkClutterEmbed widget,需要用gtk_clutter_init代替clutter_init和gtk_init初始化clutter和GTK+。使用gtk_main()代替clutter_main()创建main loop。Actor
clutter中的基本actor有: (1) ClutterStage --- stage (2) ClutterRectangle --- 矩形 (3) ClutterText --- 显示和编辑文本 (4) ClutterTexture --- 图片 每个actor需要用clutter_container_add()函数添加到stage 中,并且用clutter_actor_set_position()函数设置位置(x,y坐标),z 轴使用clutter_actor_set_depth()函数设置。使用clutter_actor_set_size()函数设置宽度和长度 (width and height)。 actor 的位置默认在 parent container(比如stage)的 top-left(0,0),可以用clutter_actor_set_anchor_point()函数改变。 默认情况下,actor 是隐藏的,需要调用clutter_actor_show()函数显示。可以调用clutter_actor_hide()函数隐藏对象。actor 可以使用scaling(缩放)、rotation(旋转)、partly transparent(透明)变形。Containers(容器)
ClutterContainer ClutterStage ClutterGroup 使用ClutterGroup可以同时操作几个actor。-
扩展阅读:
-
- 1
programming-with-clutter,该文章详细的介绍了clutter,想详细了解clutter的朋友值得好好看看。
- 1
更多推荐
所有评论(0)