X Window研究笔记--七大设计准则

原创 2007年09月11日 21:33:00
X Window研究笔记(1)

转载时请注明出处和作者联系方式
作者联系方式:李先静 <xianjimli at hotmail dot com>

有不少朋友发邮件给我,询问关于TinyX的一些问题,最常见的是编译错误和字体显示问题。因为我们后来改用DirectFB作为显示后端了,所以很久没有再玩X Window了,我这里没有调试环境,也没有时间去帮大家调试。希望大家原谅。

虽然X Window是一个非常复杂的系统,但只要静下心来分析,通常遇到的问题也是很容易解决的,前年我花了一段时间去研究X Window的实现,我发现了解它的实现后,很多问题都迎刃而解了。最近我会整理一下当时的笔记,放到这里供有兴趣的朋友参考。

缩略语清单:
BDF Bitmap Distribution Format
DBE Double Buffer Extension
DIX Device Independent
DDX Device Dependent
ICCCM The Inter-Client Communication Conventions Manual
DMX distributed multihead X system
DMPS Display Power Management Signaling
DPS Display Postscript
DRI Direct Rendering Interface
EVI Extended Visual Information
FS Font Service
ICE Inter-Client Exchange
RX remote execute
CUP Colormap Utilization Policy and Extension
DMCP Display Manager Control Protocol
XIM X Input Method Protocol
XI X11 Input Extension Protocol
XSMP X Session Management Protocol
XP X Print Service
XPM X PixMap Format
XTrans X Transport Interface
GC Graphic context

1.序

X Window是一个典型的幕后英雄,很多人在用 Xwindow,但是由于他们并不直接和X Window交互,而是使用基于X Window实现的像QT和GNOME这样的桌面环境。结果,很多人不知道X Window的存在,甚至以为X Window是过时了东西。还有的人虽然知道X Window的存在,但认为X Window会占用了大量的资源,非常不稳定,称X Window为垃圾,这又走了另外一个极端,误以为整个桌面环境都是属于X Window的。

事实上,X Window是一个非常经典的系统,经过二十多年的发展,它不但变得很稳定,而且被雕琢得非常精致,里面采用很多先进的设计思想。就体积而言,它也并不庞大,为嵌入式系统而精简的TinyX,可执行文件仅仅有几百K大小。

X Window在设计之初就定下了七条设计准则,现在已经广为unix程序员所周知了,这里引用一下(http://www.wiki.cn/wiki):

  1. 除非沒有它就無法完成一個真正完整的應用程式,否則不用增加新的功能。
  2. 決定一個系統不是什麼和決定它是什麼同樣重要。與其去適應整個世界的需要,寧可使得系統可以擴展,這樣可以用上層相容的方式來滿足新增需求
  3. 有根本沒有實例才會比只有一個實例更糟。
  4. 如果問題沒有完全弄懂,可能最好根本就不要去解決它
  5. 如果預期要用百分之90的努力去完成百分之10的工作,應該用更簡單的辦法解決。(參見更糟就是更好。)
  6. 盡量避免複雜性。
  7. 提供機制而不是策略。實踐中把用戶界面策略放在用戶手裡。

第一條原則在設計X11時修改為:「除非制訂有真實的應用程序需要,否則不用增加新功能。」 X基本上一直遵循這些原則。參考實現是從擴展和改進的著手來進行開發,同時和1987年的最初的協議幾乎保持完全相容。

这些原则,放在二十多年后的今天,仍然无一不是金玉良言,让我对这些前辈们的敬意油然而生。

Xwindow里值得研究的东西可以说的东西太多了,它是一个非常复杂的系统,要把它的每一个细节都搞清楚,没有数月的努力是不可能的。粗看时,它的代码并不能称为经典,甚至有些代码风格让人很难受,其中充斥着大量的#ifdef,还有一些巨长的函数,一些缩写蒙得你找不到北。

然而,瑕不掩钰,如果能克服阅读代码时暂时的头痛脑胀,你会发现Xwindow 的设计非常巧妙,很多时候它在概念上比其它窗口系统都要先进,以至于经过这么多年之后,它仍然是unix-like的图形系统标准,可以说许多其它窗口系统的概念都是从 Xwindow 学来的。

本文将对X Window的架构做些探讨,希望能在阅读本文后,对X Window有总体上的认识,避免阅读代码时只树木不见森林的感觉,由于X Window很庞大,不可能在一份文档里,甚至是一本书里,把所有东西讲清楚,阅读本文并不能代替阅读代码。

(待续)

 
版权声明:本文为博主原创文章,未经博主允许不得转载。

《学术研究--你的成功之道》读书笔记

本书封皮如下: 上周三的时候凌晓峰教授来我们学校做“如何写好学术论文”的学术报告,汇报完毕后他现场签名售书,虽然我当时没有买一本,不过好在还是有人买的,今天晚上把这本书大致过...
  • jj12345jj198999
  • jj12345jj198999
  • 2013年05月20日 22:45
  • 2346

数理统计学习笔记——总体与样本

数理统计是研究大量随机现象规律性的
  • libaqiangdeliba
  • libaqiangdeliba
  • 2014年09月28日 10:29
  • 1125

剑指Offer——联通研究院笔、面试题 (Offer-1已收割)

剑指Offer——联通笔、面试题1.二叉树适宜存储什么样的数据?树最适合用来表示( C )。 A.有序数据元素 B.无序数据元素 C.元素之间具有分支层次关系的数据 D.元素之间无联系的数据2...
  • sunhuaqiang1
  • sunhuaqiang1
  • 2016年11月04日 13:26
  • 42881

X Window研究笔记

  • 2010年02月02日 23:07
  • 658KB
  • 下载

X Window 程式设计入门--第三章 绘图(Graphic)

http://cnpa.yzu.edu.tw/~thinker 作者:李圭烽 (Thinker; Thinker.bbs@bbs.yzu.edu.tw) (2001-06-01 20:10:00) ...
  • c1505011056
  • c1505011056
  • 2013年10月11日 14:46
  • 971

X Window 程式设计入门

这只是入门,仅仅是入门而已。所以并不是很完全,却可以给你一个概观的了解,让你知道 X Window programming 过程和所需的基本知识。如果你需要更进一步的资料,请参考 Xlib - C L...
  • hxh129
  • hxh129
  • 2012年08月07日 14:56
  • 706

X Window 程式设计入门--第四章 Event

Index:  Event Types and Event Masks   Events Propagation   Event Handling   Events   MapNotify ...
  • hxh129
  • hxh129
  • 2012年08月07日 16:40
  • 1055

X Window 程式设计入门--第四章 Event

http://cnpa.yzu.edu.tw/~thinker 作者:李圭烽 (Thinker; Thinker.bbs@bbs.yzu.edu.tw) (2001-06-01 21:04:00) ...
  • c1505011056
  • c1505011056
  • 2013年10月11日 14:48
  • 553

X Window 程式设计入门--第三章 绘图(Graphic)

Index:  颜色   Graphics Context   Graphics   Image   例   -------------------------------------...
  • hxh129
  • hxh129
  • 2012年08月07日 16:38
  • 1245

X Window 程式设计入门--第六章 Inter-Client Communication

Index:  Property & Atom      Atom      Property   Cut Buffer   Window Manager      WM_NAME   ...
  • hxh129
  • hxh129
  • 2012年08月07日 16:44
  • 616
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:X Window研究笔记--七大设计准则
举报原因:
原因补充:

(最多只允许输入30个字)