[转帖]linux下的X server:linux图形界面原理

linux下的X server:linux图形界面原理

https://www.cnblogs.com/liangxiaofeng/p/5034912.html

linux下的X server:linux图形界面原理

Moblin Core是在Gnome Mobile的平台上建立。我以前玩Linux,提交的都和图像没有关系,连Xwindows都不用启动,开机后直接进入文本命令行,所以这方面了解得很少,需要学习一下.

  严格来讲,Linux这个词本身只表示Linux内核,但在实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用 GNU工程各种工具和数据库的操作系统(也被称为GNU/Linux)。基于这些组件的Linux软件被称为Linux发行版。一般来讲,一个Linux 发行套件包含大量的软件,比如软件开发工具,数据库,Web服务器(例如Apache),X Window,桌面环境(比如GNOME和KDE),办公套件(比如OpenOffice.org),等等。GNU组件可以运行于Linux内核之上。整 个内核是基于GNU通用公共许可,也就是GPL( General Pubic License)的,但是Linux内核并不是GNU 计划的一部分。

一、linux本身没有图形界面

linux现在的图形界面的实现只是linux下的应用程序实现的:

图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,linux和Xfree的关系就相当于当年的DOS和WINDOWS 3.0 一样,windows 3.0不是独立的操作系统,它只是DOS的扩充,是DOS下的应用程序级别的系统,不是独立的操作系统,同样XFree只是 linux下的一个应用程序而已。不是系统的一部分,但是X的存在可以方便用户使用电脑。WINDOWS 95及以后的版本就不一样了,他们的图形界面是操作系统的一部分,图形界面在系统内核中就实现了,没有了图形界面windows就不成为windows 了,但linux却不一样,没有图形界面linux还是linux,很多装linux的WEB服务器就根本不装X服务器。这也WINDOWS和linux 的重要区别之一。

二,X是协议,不是具体的某个软件

  X是协议,就像HTTP协议,IP协议一样。这个概念 很多初学者甚至学习 LINUX有一定时间的人都混淆,一个基于X的应用程序需要运行并显示内容时他就联接到X服务器,开始用X协议和服务器交谈。比如一个X应用程序要在屏幕 上输出一个圆,X应用程序只负责告诉X服务器在屏幕的什么地方用什么颜色画一个多大的圆,而具体的"画"的动作,比如这个圆如何生成,用什么显卡的驱动程 序去指挥显卡完成等等工作是由X服务器来完成的。X服务器还负责捕捉键盘和鼠标的动作,假设X服务器捕捉到鼠标的左键被按下了,他就告诉X应用程序:亲爱 的应用程序先生,我发现鼠标被按下了,您有什么指示吗?协议是需要具体的软件来实现的,这就是下面我要讲的:

三,X和XFree86的关系

有了协议就需要具体的软件来实现这个协议。Xfree86就是这样一个去根据法规实现协议的"交警"。实现X协议的软件也并不只有 XFree86,XFree86只是实现X协议的一个免费X服务器软件。商业上常用MOTIF,现在还有XORG,还有很多很小的由爱好者写的小的X服务 器软件。甚至可以在WINDOWS上有X服务器运行,这样你可以在linux系统上运行一个X应用程序然后在另一台windows系统上显示。

在LINUX上最常用的是XFree86(现在的linux发行版都用Xorg了)。苹果电脑的图形界面用的也是X协议,而且被认为是做的最好的X协 议图形界面,并且他对X协议的实施是做在系统内核里的,所以性能明显好很多,这就是为什么很多大型三维图形设计软件都是在苹果平台上的原因。

既然是协议,那么肯定和平台无关的,因此可以让X应用程序显示在任何装有X服务器的远程计算机上。甚至显示在装有Xnest服务器的windows系 统上。只不过在大多数情况下,X应用程序都用本机的X服务器,然后X服务器将显示结果输出到本机的显示器。这也是很多人不理解X是一种协议的原因。

四,X和X11R6又是什么关系?

不知道初学者有没有注意到/usr/X11R6这个目录,这是XFree的默认安装目录。X11R6 实际上是X Protocol version 11 Release 6(X协议第11版第六次发行)的意思。不同版本的X协议是不能通信的,不过不用担心,现在的X服务器软件和X应用程序都遵循X11R6。另外XFree86 3.3.6 XFree86 4.3.6等这些版本是实现X协议的软件XFree86的版本号。

五,X服务器和WM(window manager 窗口管理器)之间是什么关系。

平时大家起动图形界面是怎么启动的呢? 如果一开始就进入图形界面,可打开一个XTERM输入init 3,就可以安全的回到字符界面。

先输入以下命令: # startx 起动图形界面,你看到的是一个和平时使用一样的完整的图形界面操作环境。你可以最大化,最小化,移动,关闭窗口等。

按ctrl+alt+backspace反回字符界面。输入:#xinit,再次启动图形界面,你看到一个XTERM。而且不能移动。但是你可以在这 个XTERM中输入命令打开X应用程序,如果我输入:#mozilla 打开浏览器,你看到的浏览器和平时有什么不同吗?他在屏幕中间,不能移动,不能最小化,不能最大化,没有边框。

为什么同样一个X应用程序会有这样的不同呢?因为我们用startx起动图形界面的时候同时也启动了一个WM(即窗口管理器),如果你用KDE就起动 了 KDE,如果你用GNOME就起动了GNOME。但是你用xinit起动图形界面的时候却没有起动WM。现在你明白窗口管理器的作用了吗?他的作用就是最 大化,最小化,移动,关闭窗口等。而这些不是X服务器来负责完成的。

如果你用xinit起动图形界面并在xterm中输入twm,看看会有什么?xterm被加上了一个边框,你可以通过这个边框移动,最大化,最小化这 个xterm,twm就是XFree86中自带的窗口管理器,是一个比较简陋的最简单的窗口管理器,但是他具有窗口管理器的全部特征。如果你不输入twm 而输入gnome-session就可以起动GNOME 或者输入startkde起动KDE。

六,关于KDE和GNOME

KDE和GNOME是LINUX里最常用的图形界面操作环境,他们不仅仅是一个窗口管理器那么简单,kDE是K Desktop Environment的缩写。他不仅是一个窗口管理器,还有很多配套的应用软件和方便使用的桌面环境,比如任务栏,开始菜单,桌面图标等等。

GNOME是GNU Network Object Model Environment的缩写。和KDE一样,也是一个功能强大的综合环境。

另外在其它UNIX系统中,常常使用CDE作为这样一个环境。

其它的小型窗口管理器有: window maker,after step,blackbox,fvwm,fvwm2,等等都是常用的优秀窗口管理器。REDHAT9中有window maker 但是默认不安装,大家可以装来试试。只要xinit再wmaker & 就可以用windowmaker了。

七,linux图形界面层次关系总结

  linux本身-->X服务器<-[通过X协议交谈]->窗口管理器(综合桌面环境)-->X应用程序。

原文地址:https://www.cnblogs.com/jinanxiaolaohu/p/10649991.html

时间: 2024-10-23 00:29:36

[转帖]linux下的X server:linux图形界面原理的相关文章

使用Powershell管理Linux 下的 SQL Server

我们上一篇文章介绍了在Centos 7.3下安装及配置 SQL Server,今天我们主要介绍的是如何在Windows下使用Powershell来管理Linux下的SQL Server,其实说到Powershell大家都已经很熟悉了,Powershell不止是命令集合也是批量程序,可以很好的协助管理员提高日常的运维工作,但是微软的Powershell有一个毛病就是不同的服务需要安装不同的Powershell,对于Lync下的Shell.Exchange Shell和系统自带的Powershell

微软发布 Linux 下的 SQL Server 公众预览版

微软发布了它的下一个版本的 SQL Server 数据库的公众预览版,同时支持 Linux 和 Windows. 在今年 3 月,微软发布过 SQL Server for Linux 的一个内部预览版.同时,微软官方说 SQL Server for Linux 是 SQL Server for Windows 版本的一个子集,将可以运行在 Ubuntu 上或作为 Docker 镜像运行(后来补充说内部预览也支持 Red Hat 的 RHEL).该公司官方称用户购买的 SQL Server 将可以

Linux下搭建PXE服务器安装Linux系统

PXE服务器安装与配置 花了一个星期主要研究这个,查阅了国内外相关的资料,发现这方面的东西还是比较少的,至少还没有完备的一个体系,这次测试过程发布出来 希望能帮助到一些人,有什么不懂得可以提出来,大家一起讨论. 原理: PXE是在没有软驱.硬盘.CD-ROM的情况下引导计算机的一种方式,也就是BIOS将使用PXE协议从网络引导. DHCP服务器:用来动态分配IP地址(同时分配子网掩码.网关.TFTP服务器地址.启动文件名.DNS服务器.时间服务器等等). TFTP服务器:用来提供启动文件的下载

Linux下adb驱动问题Linux下使用手机USB调试模式连接ADB进行Android程序的调试

Linux 下adb 驱动问题 Linux下使用手机USB调试模式连接ADB进行Android程序的调试,配置驱动没有Windows来的直观. 具体步骤首先确认手机连接上电脑,lsusb查看下设备记录. [email protected]:~$ lsusb Bus 007 Device 009: ID 18d1:4e12 Bus 007 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 006 Device 001: ID 1d

Linux下的tree命令 --Linux下目录树查看

Linux下的tree命令 --Linux下目录树查看 有时我们需要生成目录树结构,可以使用的有ls -R,但是实际效果并不好 这时需要用到tree命令,但是大部分Linux系统是默认不安装该命令的,需要自己安装一下;tree的常见用法: tree -a  #显示所有 tree -d  #仅显示目录 tree -L n  #n代表数字..表示要显示几层... tree -f  #显示完整路径..

[转帖]Ubuntu 18.04 server安装图形界面及realvnc远程桌面连接

Ubuntu 18.04 server安装图形界面及realvnc远程桌面连接 https://blog.csdn.net/networken/article/details/88938304 转帖 学习一下. 版权声明:本文为博主原创文章,转载请注明出处. https://blog.csdn.net/networken/article/details/88938304 ubuntu server安装图形界面 sudo passwd root su root apt-get update apt

linux下安装nodejs及linux下解压tar.xz文件

1.下载nodejs的安装包  2.解压该文件 在linux下,大部分情况下不能直接解压tar.xz的文件. 需要用xz -d xxx.tar.xz 将 xxx.tar.xz解压成 xxx.tar 然后,再用 tar xvf xxx.tar来解包 3.修改/etc/profile文件 增加以下内容: #SET PATH FOR NODEJS export NODE_HOME=/opt/node-v6.10.3-linux-x64 export PATH=$NODE_HOME/bin:$PATH

Linux下安装Redis及Linux下php安装Redis扩展

下载源码:wget http://redis.googlecode.com/files/redis-2.8.19.tar.gz 1.解压安装:  wget http://download.redis.io/releases/redis-2.8.19.tar.gz   tar xzf redis-2.8.19.tar.gz   cd redis-2.8.19  make   make install  cp redis.conf /etc/ 参数介绍: make install命令执行完成后,会在

十(3)linux下抓包、linux网络相关,firewalld和netfilter,5表5链

 linux下抓包  tcpdump  tcpdump工具默认没有 (yum install -y tcpdump) tcpdump -nn -i 设备名 tcpdump -nn -i ens33 (抓取本机网卡ens33数据包) -i 后面加设备名,如果抓取网卡则后面加网卡名(如本机的ens33) -nn 作用是让第3列和第4列显示成"ip+端口号"形式 如果不加-nn则会显示成"主机名+服务名称" 图中的">"表示 前面原ip要作用到哪