许多人在用 Xwindow,可是他们是在用一些包装掩盖下的 Xwindow,那些包装有些很不安稳,占用许多资源,以至于有人说 Xwindow 是废物。其实 Xwindow 是一个十分超卓的图形体系,你应该诉苦的是那些不安稳的包装,而不是 Xwindow 自身。
Xwindow 是十分奇妙的规划,许多时分它在概念上比其它窗口体系先进,以至于通过许多年它仍然是作业站上的工业规范。许多其它窗口体系的概念都是从 Xwindow 学来的。
Xwindow 能够说的东西太多了。下面只分辩一些简单混杂的概念,提出一些正确运用它的主张。
分辩 X server 和 X client
这是我被他人问了好屡次的问题,我真实不想再对人说一遍了,所以写在这儿偷个懒,嘿嘿。
许多了解 Internet 原理的人初次遇到 Xwindow 的这两个概念都会搞错。假如他从一台 Windows 机器上运用 Exceed 通过 XDMCP 登录到一台 Sun 服务器,他就说 Exceed 是客户端(client),而 Sun 机器是服务器 (server)。这就彻底搞错了。
了解了 Xwindow 的作业原理,这个差异就会很明显。X server 不是指你登录的那台机器,而是指一个程序,它担任在某台机器上承受客户的要求,在屏幕上显现客户恳求的图形,并且把音讯(键盘,鼠标,窗口音讯)告诉客户程序。
比方上面比方里的 Exceed 便是一个 X server,它担任操控那台 Windows 机器上的显现(display),Sun 机器上的程序,xterm, xxgdb, dtwm(CDE的窗口管理器),……是客户程序。它们一般会运用 TCP 6000 号端口衔接 Windows 机器,而Windows机器的 6000 号端口是由 Exceed bind 和 listen 的,怎么样,咱们的 Internet 专家,Exceed 看起来是一个 server 吧 🙂
比方,当你通过 telnet 发动 Sun 机器上的 xterm,就会在 Exceed 的屏幕上显现一个窗口。实践产生的工作是: xterm 恳求衔接 Windows 机器的 6000 号端口,与Exceed 跟 Exceed 衔接,然后xterm恳求得到资源,然后 xterm 恳求在屏幕上显现一个窗口。
你在 xterm 的窗口里按下A键时,Exceed 会把这个事情告诉 xterm 进程,然后 xterm 会发送数据报,恳求 Exceed, “请在坐标(100,30)处显现一个字母A,然后在后面显现一个矩形作为光标。”,这样你的 xterm 窗口里就会多显现一个字母。
这下你了解了吗?不?那仍是自己多用用,领会领会吧。
Xwindow 的网络透明性
方才那个 Exceed 用户,他的客户程序不只能够运转在那台 Sun 机器上,并且能够运转在网络里其它的机器上,或许在本机上。比方他有或许一起通过 telnet 登录到几台 Sun 作业站,几台 Linux PC,他能够在那些机器上都起动 xterm,在这台 Windows 机器上的 Exceed 上显现。假如它装置了 cygwin,他还能够发动本机上的 cygwin里 的 xterm,用相同的方法显现。
假如他运用 xrdb 在本机的 Exceed 设置了 xterm 的款式,比方布景 midnightblue, 远景 白色,字体 -*- adobe-courier-*,……,那么,Sun, Linux, cygwin 里的 xterm,尽管没有通过装备,可是它们知道:“这个 X server 要求我用这个布景色,这个远景色,这个字体……”,它们会在你的屏幕上显现相同风格的窗口。
运用鼠标挑选一段字符,然后就能够在别的的程序里按鼠标中心,把字符张贴曩昔。不管这个程序运转在哪里。
看看更大的一个图景:你的屏幕上有三台机器上的 xterm, 两台机器上的 gvim,两台机器上的 mozilla 在显现,而它们都受本机的 FVWM 操作,它们之间能够随意进行复制张贴…… 从这儿你能够开始领会到 Xwindow 的网络透明性,它使你便利的操作许多机器。
什么是窗口管理器?
许多人不知道窗口管理器是怎么回事。他们以为 Gnome 和 KDE 是窗口管理器,以为窗口管理器便是能够供给一个东西条,能够装备桌面布景,能够设置许多菜单的东西。而其实,窗口管理器仅仅 Gnome 和 KDE 的一部分,它的主要功能是你平常底子没有留意,可是却十分重要的操作。窗口管理器的主要功能是:移动窗口,改动窗口巨细,图标化(最小化)窗口,改动窗口层叠次序……
一般的X客户程序不需求知道有人想移动它,它只知道乖乖听窗口管理器的话。假如没有窗口管理器运转,你的程序会一个堆一个,你没有办法操作被盖鄙人面的程序,你只能运用最上面一个程序,并且你不能移动它,你不能改动它的巨细。这样的体系底子不能用!
其实你的窗口上的标题,按钮,美丽的边框,全都是窗口管理器供给的,而不是程序自己的,这样你用窗口管理器就能改动任何窗口的款式了。当你点击封闭窗口的那个按钮,你其实点击的是窗口管理器放在你的程序窗口上面的一个小窗口,发现它遭到点击后,窗口管理器就会告诉那个程序:“喂!有人想关掉你,你自己预备预备后事,然后退出吧。”
不同的机器在本机显现的窗口,由窗口管理器共同装修和指挥。比方,窗口管理器决议: xterm 窗口上面都应该有四个按钮,一个在左面,点击它会显现窗口操作菜单,别的三个在右边,分别是最大化,最小化和封闭。窗口都运用 7pixel 厚的边框,窗口初次呈现的时分首先在桌面上找一个空方位,假如找不到,就找一个能够最少的隐瞒其它窗口的方位……
这些都是窗口管理器的责任。
Gnome 和 KDE 是什么?
有人把 Gnome 和 KDE 叫做窗口管理器,乃至还有人把它们叫做 Xwindow。常常看到有人问:“装哪种 Xwindow 好啊?Gnome 仍是 KDE?” 其实你不装置 Gnome 和 KDE 也能够运用 Xwindow.
Gnome 和 KDE 是“桌面体系”,一种许多程序和函数库的调集。它们的规划意图是供给共同的便利的操作方法来满意普通用户的需求。它们不光包含窗口管理器,还有许多实用程序和应用程序,比方装备程序,东西条,编辑器,绘图东西…… 其实 Gnome 能够和许多窗口管理器协作,在历史上, Gnome 运用过的窗口管理器包含 englightenment, sawmill, sawfish, metacity。KDE 的窗口管理器叫做 kwin。
你也知道,规划整整一套应用程序:编辑器,绘图程序,浏览器,…… 是十分不简单的。所以它们肯定是不如专用的编辑器,绘图程序,浏览器的。不过要求不太高的用户也能够用它们。