这里的“桌面”指的是桌面环境,Linux不是一种基于图形界面环境的操作系统,它的图形环境是完全可以卸载。在内核眼里,图形环境只不过是一个普通的应用程序,和其他的服务器程序没有什么不同。
在说桌面,先讲X窗口系统的基本组成。X窗口系统(X Window System)是Linux图形用户环境的基础,基于一种够独特的服务器/客户机架构。
X窗口系统的基本组成
- X服务器
X服务器用于实际控制输入设备(如键盘、鼠标等)和位图式输出设备((如显示器)。准确地说,X服务器定义了给X客户机使用这些设备的抽象接口,但没有定义高级实体的编程接口,这意味着它不能理解“画一个按钮”这类语句。而必须告诉它:“画一个方块,周围有阴影,用户点鼠标左键的时候阴影要消失、、、方块上还要有字、、”。
这种设计的意义在于,X服务器能够最大程度上的与平台无关。用户可以自由选择窗口管理器和widget库来定制自己的桌面,而不需要改变窗口系统的底层配置。 - X客户端程序
需要向X服务器请求服务的程序就是X客户端程序。 - 窗口管理器
窗口管理器负责控制应用程序窗口的各种行为,如移动、缩放、最大化和最小化窗口,在多个窗口间切换等。从本质上来说,窗口管理器是一种特殊的X客户端程序,因为这些功能也是需要向X服务器发送指令实现的。 - 显示管理器
显示管理器提供了一个登录界面,它的任务就是验证用户的身份,让用户登录到系统。可以说,图形界面的一切(除了它自己)都是由显示管理器启动,包括X服务器。用户可以选择关闭显示管理器,这样就必须通过命令运行startx命令(或使用.login脚本)来启动X服务器。 - widget库
widget库定义了一套图形用户界面的编程接口。应用程序的开发人员调用widget库来实现具体的用户界面,如按钮、菜单、滚动条、文本框等。 - 桌面环境
桌面环境是把各种X有关的东西(除了X服务器)整合在一起的“大杂烩”。这些程序包括像gedit这样的普通应用软件、窗口管理器、显示管理器和widget库。无论桌面环境如何复杂,最后处理图形输出的仍然是X服务器。
X系统的启动过程
X系统的启动过程基本是由显示管理器完成的。显示管理器需要做下面的工作:
- 启动X服务器
- 提供一个友界面友好的屏幕,等待验证用户的身份。
- 执行用户的引导脚本,这个脚本用于建立用户的桌面环境。
桌面环境的引导脚本是一段用Linux命令组成的脚本程序,叫做Xsession。Xsession通过启动窗口管理器、任务栏,设定应用默认值、安装标准键绑定等来启动整个桌面环境。Xsession会一直运行,直到用户退出,或者说,当Xsession结束后,用户就退出了。窗口管理器(Window Manager)是Xsession启动的唯一的前提程序(其他程序都在后台执行),如果没有这个前台程序,那么用户会在登录又立即退出系统。
第一次使用这个Markdown编辑工具,基本不会用,纯文字没有划重点,有怪莫怪。感觉还是之前那个富文本编辑好用。