Linux下X11协议理解

概念

  • X client:X客户端。通常是各类GUI应用,如Firefox、xterm、xclock等
  • screen:逻辑概念上的屏幕。可以是一台物理显示器、多台物理显示器或者是VNC虚拟显示器
  • X client与X server的通信方式有三种:TCP,unix socket和通过内存通信。后两种方式仅限于X
    client与X server都位于同一机器的情况,通信效率更高。

关系

  • 一台电脑上可以运行多个X server
  • 一个X server可以管理多个screen
  • 一个screen可以对应单个或多个物理显示器(多个显示器合成一个逻辑screen)

手动启动Xserver

每一个Xserver启动后都会占用一个TCP端口,用来监听客户端的连接,监听端口号为 6000+display,比如,:0 号display的TCP端口号为6000+0=6000,以此类推。

启动Xserver的方式有很多:

  1. 直接使用 X 命令:sudo X :10 & sleep 2 ; DISPLAY=:10 xterm
  2. 通过xinit程序启动Xserver:sudo xinit /usr/bin/xterm -display :10 -- :10
  3. 通过startx脚本启动Xserver:sudo startx /usr/bin/xterm -- :10

DISPLAY作用

它是Linux X11 client用到的一个环境变量,X client首先会获取并解析当前Shell中DISPLAY变量的值。接着,X client根据解析结果,把绘图命令发送给对应的X server。通常会被设为:0.0 。

DISPLAY格式

格式有三部分组成: [主机名]:显示服务端口号-6000.显示器编号

  • [主机名] :可以省略不写,也可以写成$HOSTNAME变量表示的主机名 或 localhost
  • 显示服务端口号-6000:是指sshd服务的X11Forwarding占用端口减去6000的值
  • 显示器编号:一般都是0,表示第一个显示器
相关推荐
Decay__7 小时前
12_MySQL InnoDB 内存与锁调优 —— Buffer Pool、redo log、隔离级别与锁等待
运维·数据库·sql·mysql·架构
java_logo9 小时前
Docker 部署 Dify:轻松搭建 LLM 应用开发平台
运维·docker·容器
方便面不加香菜10 小时前
Docker Container -- 综合实战案例详解
运维·docker·容器
LongRunning11 小时前
【Linux】RK3568-OpenCV+YOLO(八)
linux·opencv·yolo
海洋之恒11 小时前
GitHub Actions 自动化:5 个真实运维提效案例
运维·自动化·github
迪康coolmu13 小时前
出差终端数据安全落地实战:基于迪康端点安全一体化管理系统的四道防线实践
运维·服务器·经验分享·笔记·其他·安全·php
民乐团扒谱机14 小时前
【微实验】NSGA-II(非支配排序遗传算法)——解决多目标优化问题的“自然选择模拟器”
linux·人工智能·算法
물の韜15 小时前
ZYNQ/FMQL系列Linux之I2C开发实战
linux·arm开发·嵌入式硬件·设备树·iic·zynq
qq_3718021115 小时前
Ubuntu Linux中安装WorkBuddy
linux·运维·服务器·ubuntu