Xorg 是一个 X11 显示服务器。GUI 程序使用 GTK 或 Qt 等工具包,以及 libX11 或 libxcb 等客户端库向它发送 X11 请求。服务器负责管理输入、输出和渲染;GLX 和 XRender 等扩展支持加速渲染。
连接到显示器 #
DISPLAY 的形式为 [protocol/]host:display[.screen]。对于通常的本地显示器,:0 选择 /tmp/.X11-unix/X0。TCP 显示器使用端口 6000 + display,但现代 Xorg 通常会禁用 TCP 监听。建立连接后,客户端和服务器会交换设置数据、请求和响应,以及按键和 expose 通知等异步事件。SSH X11 转发会在保留该协议的同时创建受保护的传输通道。
身份验证 #
能够打开 Unix 套接字并不代表已经获得授权。常见的 MIT-MAGIC-COOKIE-1 机制会将每个显示器对应的随机令牌存储在 Xauthority 文件中,通常是 ~/.Xauthority 或由 XAUTHORITY 指定的文件。客户端选择与 DISPLAY 匹配的条目,并在设置握手中发送 Cookie;服务器会拒绝不匹配的令牌。DISPLAY 指示连接位置,而 XAUTHORITY 指示要提供的凭据。xhost 可以修改服务器端的访问控制,但宽泛的规则不如共享特定 Cookie 安全。
组件 #
X.Org 源代码项目包括构建 X 和 Xorg 服务器可执行文件的 xorg/xserver,以及构建 xinit 和 startx 的 xorg/app/xinit。显示管理器通常负责启动服务器和会话。startx 是一个面向用户的 xinit 便捷包装器;确切的权限和设备访问配置取决于发行版及其与 logind 或 seat 管理的集成方式。
评论
在 GitHub 上阅读或评论(发表评论需要登录)