XWindow 是一种以位图方式显示的软件窗口系统,最初是 1984 年麻省理工学院的研究成果,之后变成类 UNIX 操作系统的标准化软件工具包及显示架构协议。
这里简单介绍。
简介
在 Linux 中最常用的是 X Window System,采用的是 server/client 架构:
- XServer 接收 Client 数据绘制屏幕,处理用户的输入发送给 Client 端。
- XClient 接收鼠标移动、点击等动作,以此计算如何响应,将结果发送给 Server 端进行绘制。
这里与常规的理解有些出入,也就是说,本地的被称为 Server 而远端的是 Client 端。
Window Manager
每个窗口就是一个 Client,所以,通常只有一个 Server 和多个 Client,如果每个 Client 只根据自己的需求进行绘制,必然会导致叠图的问题,因此需要一组特殊的 Client 来管理,这就是 Window Manager。
Window Manager, WM 是一组控制所有 Client 的管理程序,并同时提供例如任务栏、背景桌面、虚拟桌面、窗口大小、窗口移动与重迭显示等任务,常见的有 GNOME、KDE、XFCE 等。
Display Manager
早期在用户通过终端登录后,需要自己启动 Server 程序,然后再启动对应 Window manager,按需启动其它 Client 就可以了,为了简化图形界面启动步骤,就有了 Display Manager, DM 。
通常来说,DM 会在显示登录界面前启动 Server,当用户登出后仍然显示登录界面,类似于字符界面下的 getty 和 login。
VNC
通常 VNC Server
会运行在 Linux 服务器上,一般可以使用 tigervnc-server
作为服务器,而客户端可以运行在 Windows Linux 等平台上,一般使用 vncviewer
。
大致的工作原理是:A) VNCServer
在 Linux 上运行启动了一个 Xserver;B) Linux 下的 XClient
通过 x11
协议连接,而 Window 下的 VNCClient 通过 VNC 协议连接。
安装服务端
也就是在 Linux 上的配置,TigerVNC 会使用 5900+N
作为服务端口,启动参考如下。
----- 安装客户端(可选)、服务端
# yum install tigervnc tigervnc-server
# apt install tigervnc-standalone-server tigervnc-viewer
----- 启动服务端,N为数字,第一次会提示输入密码,或者手动设置
$ vncserver :N
$ vncpasswd
----- 查看已经启动的vnc服务,可以停止指定,或者所有
$ vncserver -list
$ vncserver -kill :N # 关闭之
$ vncserver -kill :*
----- 启动单个进程,默认只监听本地,可通过-localhost no监听非本地
$ tigervncserver -xstartup /usr/bin/xterm
第一次启动需要提供连接时的密码,同时会在 ~/.vnc
目录下生成相关的配置文件,启动之后可以通过 ps aux | grep vnc
查看启动的服务进程,可以通过如下命令连接。
$ vncview
$ xtigervncviewer -SecurityTypes VncAuth -passwd ~/.vnc/passwd :1
在 Windows 中通过 vncview 连接时,可以直接通过 IP:N
连接,或者 IP:5900+N
,两者都可以。根据不同的 WM 分别配置 ~/.vnc/xstartup
文件,对于 Gnome 来说,可以修改如下:
#!/bin/sh
[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources
vncconfig -iconic &
dbus-launch --exit-with-session gnome-session
参考
- TightVNC 官方文档,有很多可以参考的文档。