打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Gnome 3 相关整理(一)
Gnome背后的故事
Linux实际上是以UNIX为模板的,它继承了UNIX内核设计精简、高度健壮的特点,无论系统结构还是操作方式也都与UNIX无异。
强大的命令行界面始终是它们的基础,在上个世纪八十年代中期,图形界面风潮席卷操作系统业界,麻省理工学院(MIT)也在1984年与当时的DEC公司合作,致力于在UNIX系统上开发一个分散式的视窗环境,这便是大名鼎鼎的“X Window System”项目。不过,X Window(请注意不是XWindows)并不是一个直接的图形操作环境,而是作为图形环境与UNIX系统内核沟通的中间桥梁,任何厂商都可以在XWindow基础上开发出不同的GUI图形环境。
由于必须以UNIX系统作为基础,XWindow注定只能成为UNIX上的一个应用,而不可能与操作系统内核高度整合,这就使得基于XWindow的图形环境不可能有很高的运行效率,但它的优点在于拥有很强的设计灵活性和可移植性。X Window从逻辑上分为三层:最底层的XServer(X服务器)主要处理输入/输出信息并维护相关资源,它接受来自键盘、鼠标的操作并将它交给X Client(X客户端)作出反馈,而由XClient传来的输出信息也由它来负责输出;最外层的XClient则提供一个完整的GUI界面,负责与用户的直接交互(KDE、Gnome都是一个X Client),而衔接X Server与XClient的就是“X Protocol(X通讯协议)”、它的任务是充当这两者的沟通管道。

在 上个世纪九十年代中期,以开源模式推进的Linux在开发者中已经拥有广泛的影响力。尽管X Window已经非常成熟,也有不少基于XWindow的图形界面程序,但它们不是未具备完整的图形操作功能就是价格高昂(如CDE),根本无法用于Linux系统中。如果Linux要获得真正意义上的突破,一套完全免费、功能完善的GUI就非常必要。1996年10月,图形排版工具Lyx的开发者、一位名为MatthiasEttrich的德国人发起了KDE(Kool Desktop Environment)项目,与之前各种基于XWindow的图形程序不同的是,KDE并非针对系统管理员,它的用户群被锁定为普通的终端用户/。
 KDE项目发起后,迅速吸引了一大批高水平的自由软件开发者,这些开发者都希望KDE能够将Linux系统的强大能力与舒适直观的图形界面联结起来,创建最优秀的桌面操作系统。
KDE采用GPL规范进行发行,但底层的基础Qt当时却是一个不遵循GPL的商业软件,这就给KDE上了一道无形的枷锁并带来可能的法律风险。一大批自由程序员对KDE项目的决定深为不满,它们认为利用非自由软件开发违背了GPL的精神,于是这些GNU的狂热信徒兵分两路:其中一部分人去制作Harmonny,试图重写出一套兼容Qt的替代品,这个项目虽然技术上相对简单,但却没有获得KDE项目的支持;另一路人马则决定重新开发一套名为“GNOME(GNU Network ObjectEnvironment)”的图形环境来替代KDE,一场因为思想分歧引发的GUI之战开始了。
GNOME 项目于1997年8月发起,创始人是当时年仅26岁的墨西哥程序员Miguel DeIcaza。关于GNOME的名称有一个非常有趣的典故:Miguel到微软公司应聘时对它的ActiveX/COMmodel颇有兴趣,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开发中有两点很突出:
可达性——设计和建立为所有人所用的桌面和应用程序,不论其技术技巧和身体残疾。
国际化——保证桌面和应用程序可以用于很多语言。

 
当前最新版本Gnome 3.2.
<pic>
为何如此炫?
分析一下Gnome的架构
 



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.01999年3月 第一个主要GNOME版本
 1.0.531999年10月 "October"
 1.22000年5月 "Bongo"
 1.42001年4月 "Tranquility"
 2.02002年6月 基于GTK2的重要升级,并引入了人性化界面指导
 2.22003年2月 多媒体和文件管理器的改进
2.4
2003年9月
 Epiphany,可达性支持
 2.62004年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 ,日历下拉菜单中的程序现在可以自定义; 电池电量状态使用一个条显示;
焦点跟随光标处理得到了改进。
gnome2中采用Metacity作为管理器,

Metacity

维基百科,自由的百科全书

Metacity(发音的押韵与“capacity”类似,重音在第二个音节上[1])曾经是GNOME桌面环境下默认的复合窗口管理器[2] Metacity的开发工作是由Havoc Pennington发起的,并且它以GNU General Public License这个许可协议授权分发。

在GNOME 2.2正式引进Metacity之前,GNOME陆续使用了EnlightenmentSawfish作为它的窗口管理器。虽然Metacity是GNOME工程的一部分来并且被设计为集成进GNOME桌面,但它并不需要GNOME才能运行。同样GNOME也可以使用各种不同的窗口管理器,只要它们支持ICCCM规范。

Metacity由GTK+实现,这使得它可以主题化并与其他GTK+应用程序相融合。

Metacity的理念是简单和适用而非新颖和花哨

2011年,Gnome 3 发布,Metacity被mutter代替。

Mutter 是Gnome 3的窗口管理器,用来取代原本的Metacity,Gnome Shell实际上是Mutter的一个插件,Mutter是Metacity Clutter的缩写。他使用了Clutter这项图形程式库,亦支援OpenGL。Mutter 也支援许许多多的视窗特效。
 Mutter是Metacity与Clutter的缩写。

Mutter最初是由英特尔Moblin project平台开发。 英特尔在GNOME 2 的采用时Metacity窗口管理器,并结合程式库Clutter使其有OpenGL的功能,让速度加快。

Clutter插件主要以JavaScriptC语言写成。

更具体的说,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是英国的移动Linux开发和服务商Opened Hand公司用于GUI的软件库,是一个C API集合。Opened Hand公司已被Intel收购。概况的说,clutter之于OpenGL/GLX,就像GTK之于Xlib/X。

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的朋友值得好好看看。



本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
GTK / Gnome Application Development
Qt、GTK 和KDE、GNOME的关系
用Glade和libGlade设计Gtk+图形界面
Ubuntu16.04 用VNC链接 GNOME 桌面
Linux 高分屏设置
设置ubuntu 11.10 Unity 玻璃半透明
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服