linux x window 详解,王垠:详解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

的一部分,它的主要功能是你平时根本没有注意,但是却非常重要的操作。窗口管理器的主要功能是:移动窗口,改变窗口大小,图标化(最小化)窗口,改变窗口

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值