Linux体系结构(三): X Window架构
来源:互联网 发布:消防安全四知四会 编辑:程序博客网 时间:2024/05/17 20:33
原文地址:http://blog.chinaunix.net/uid-26838492-id-3158065.html
上一节提到如果想要使Linux系统能够开启图形化桌面,需要有X层协议的支持,而X协议的具体实现是由专门的GNU项目来做的,在以前,实现此协议的GNU项目是XFree86,而如今,已经被Xorg所代替,也许将来Xorg也会完全被Wayland替代。
打开Xorg的官方,可以查看到当前稳定版本的Xorg是X11R7.6,这个版本的命名是什么意思呐?R7代表当前的X协议是第7个版本,6代表的是第6次发行。在Fedora 17发行版本中,可以使用下面的命令来查看所有xorg相关的rpm包:
# rpm -qa|grep xorg
1. Xorg架构
Xorg的架构分为两部分:X Server 和 X Client,系统首先会启动 X Server,有了server的支持以后,就可以开启上层的X Client了,X Client具体指什么呢?可以简单的理解为我们上层的窗口管理器或GUI应用程序,比如:xterm, twm, gnome-session等,这些Client怎么和X Server交互呢?也就是通过所封装的X协议来相互交互通信:
Xorg的架构分为两部分:X Server 和 X Client,系统首先会启动 X Server,有了server的支持以后,就可以开启上层的X Client了,X Client具体指什么呢?可以简单的理解为我们上层的窗口管理器或GUI应用程序,比如:xterm, twm, gnome-session等,这些Client怎么和X Server交互呢?也就是通过所封装的X协议来相互交互通信:
2. 第一层封装(Xlib)
这里所谓的第一层封装是指Xlib,可以想这么一个问题:尽管X Server提供了服务支持,但是怎么基于X协议去开发不同的 X Client呢?如果每开发一个Client都要去分析X的协议层,是不是很麻烦,很不人道?
于是,就有了这里所说的第一层封装Xlib库,Xlib库对X协议进行了一系列的封装,以提供一个相对友好的接口,以供大家开发X Client,那么,有那些Client是基于Xlib库来开发的呢?比如 xterm 这个轻量级的终端可以让你执行linux命令,再比如 twm 这个简易的窗口管理器可以让你的xterm能够拖动,能够最大化,最小化等。只要你愿意,你也可以基于Xlib库提供的接口,来开发一个属于你自己的X Client ...
上一节有朋友问fvwm这个窗口管理器,我自己对它没有太多的使用经验,我一直热衷于openbox,fvwm这个窗口管理器是在twm的基础上开发的,猜想它所调用的还是Xlib库里面的接口。
如何体验X Server和X Client的原始交互模式呢? 大家可以先 init 3 进入命令行终端,然后执行 xinit 命令,该命令首先启动X Server,然后再把 xterm 作为第一个 X Client启动,如果你已经装了twm或fvwm,可以在xterm中输入命令去启动它们。
如果你不想使用 xinit 命令来体验,而是想真真实实的看看 X Server是如何启动的,进入 init 3 模式后,可以使用下面的命令来启动 X Server,并启动 xterm这个Client:
# X :0 & xterm -geometry 1 1 -n login -display :0
3. 第二层封装(QT或GTK )
有了上面的Xlib库对X协议作第一层封装后,就可以基于Xlib库提供的接口开发一些简单的X Client,但这样的Client功能过于单一,样式也不甚美观,于是乎,有强大的组织,强大的团队开发出了像KDE,Gnome等这种庞大的窗口管理器作为Client,那这些窗口管理器是基于Xlib库来开发的吗?
有了上面的Xlib库对X协议作第一层封装后,就可以基于Xlib库提供的接口开发一些简单的X Client,但这样的Client功能过于单一,样式也不甚美观,于是乎,有强大的组织,强大的团队开发出了像KDE,Gnome等这种庞大的窗口管理器作为Client,那这些窗口管理器是基于Xlib库来开发的吗?
当然不是,KDE是基于QT库来开发的,而Gnome桌面是基于GTK 来开发的,QT和GTK 都对Xlib库作了不同层次的封装,经过QT和GTK 的再次封装后,就可以基于QT或GTK 所提供的接口开发界面美观的GUI程序,于是,才有了我们今天所见到的美好世界。
这里为什么是GTK+ ,而不是GTK呢?因为GTK+包括GDK和GTK,对Xlib库真正封装的是GDK,而GTK依赖于GDK,提供一些基本的GUI Widget。
- [原创] Linux体系结构(三): X Window架构
- Linux体系结构(三): X Window架构
- X Window 架构概述
- Linux基础知识整理[11]——X-Window的架构
- X-Window的架构(转)
- Linux X Window学习
- x-window的客户-服务器架构详解
- x-window的客户-服务器架构详解
- 六 linux X window system
- Linux X Window设定介绍
- Linux启动、关闭x-window
- linux的x window system
- Linux启动、关闭x-window
- 菜鸟学习Linux 之三 显示 X Window(桌面窗口)和安装显卡驱动
- linux启动与关机与x-window
- 利用X-window配置错误入侵Linux
- linux java连接x window 问题
- linux 终端和X Window的切换
- Linux体系结构(一): Linux的前世今生
- 详解Node.js API系列 Http模块(1) 构造一个简单的静态页服务器
- 全排列(含递归和非递归的解法)
- Linux体系结构(二): Linux系统层次
- 针对移动互联网应用的网络建设和优化
- Linux体系结构(三): X Window架构
- 创新工场2014武汉站一道算法题
- javaScript中日期的计算 UTC函数语法
- 面试题->找出自然数
- Linux体系结构(四): 内核空间和用户空间
- Tomcat安装配置
- 【4个Win7系统轻松清理记录小技巧】
- smooth function
- Linux体系结构(五): 文件系统