backgroundbackground
Xephyr - 在 X 服务器中运行嵌套 X 服务器

Xephyr - 在 X 服务器中运行嵌套 X 服务器

X11 / Linux / Xephyr

教程

2024-11-29 05:50

Xephyr允许你在现有的 X 服务器中运行一个嵌套的 X 服务器,一般用于测试 X 应用程序、创建隔离的沙盒环境,以及解决某些特定应用程序的兼容性问题。

简介

Xephyr 是基于 kdrive X 的服务器,但它不像 Xnest 那样仅仅是 X 服务器的代理,而是真正的 X 服务器。它利用主机 X 服务器的窗口作为“帧缓冲区”,通过快速的 SHM XImages 进行输出 。这意味着它支持现代扩展,例如合成、损坏和 RandR,而这些扩展在 Xnest 中可能受到限制。 Xephyr 提供了比 Xnest 更高的性能和功能完整性。

Xephyr 的主要功能和特性:

  • 嵌套 X 服务器: Xephyr 允许在另一个 X 服务器中运行一个完整的 X 服务器实例。
  • 现代扩展支持: 与 Xnest 相比,Xephyr 支持更广泛的现代 X 扩展,例如合成、损坏和 RandR。
  • 高性能: 通过使用 SHM XImagesXephyr 提供了比 Xnest 更高的性能。
  • 调试模式: Xephyr 提供了一个调试模式,可以帮助你可视化服务器的绘图过程。

Xephyr 的应用场景:

  • X 应用程序测试: 在一个隔离的环境中测试 X 应用程序,而不会影响你的主 X 服务器。
  • 沙盒环境: 创建一个安全的沙盒环境来运行不受信任的应用程序。
  • 解决兼容性问题: 解决某些应用程序与你的主 X 服务器不兼容的问题。
  • 远程 X11 转发: 作为远程 X11 转发的备用方案。

使用

Xephyr 的基本命令如下:

Xephyr -br -ac -screen 800x600 :2

这个命令会在你的主机 X 服务器上创建一个 800x600 的 Xephyr 窗口,并将其分配给显示器 ":2"。 -br 选项表示创建黑色背景的根窗口,-ac 禁用访问控制限制。

要在 Xephyr 中运行应用程序,你需要指定 DISPLAY 环境变量:

DISPLAY=:2 xterm

也可以让Xephyr监听TCP端口,通过网络让其他主机上的X11程序显示在本机上

Xephyr -br -ac -screen 800x600 -listen tcp :2

这里会监听本机的6002端口,从6000算起,:2就是+2。

客户端的环境变量要改成这样:

DISPLAY=192.168.1.3:2 xterm

这里的IP地址改为Xephyr的主机地址

帮助文档翻译

这里附上用AI翻译后的帮助文档

使用: X [:<display>] [选项]
-a #                   默认指针加速(因子)
-ac                    禁用访问控制限制
-audit int             设置审计跟踪级别
-auth file             选择授权文件
-br                    创建黑色背景的根窗口
+bs                    启用任何后备存储支持
-bs                    禁用任何后备存储支持
-c                     关闭按键点击音
c #                    按键点击音量(0-100)
-cc int                默认颜色视觉类
-nocursor              禁用光标
-core                  在致命错误时生成核心转储
-displayfd fd          当准备连接时,将显示编号写入的文件描述符
-dpi int               每英寸点数的屏幕分辨率
-dpms                  禁用 VESA DPMS 显示器控制
-deferglyphs [none|all|16] 延迟加载 [无|所有|16 位] 字形
-f #                   响铃基数(0-100)
-fakescreenfps #       假屏幕默认帧率(1-600)
-fp string             默认字体路径
-help                  打印带有这些选项的消息
+iglx                  允许创建间接 GLX 上下文
-iglx                  禁止创建间接 GLX 上下文(默认)
-I                     忽略所有剩余参数
-ld int                限制数据空间为 N Kb
-lf int                限制打开文件的数量为 N
-ls int                限制堆栈空间为 N Kb
-nolock                禁用锁定机制
-maxclients n          设置最大客户端数量(2 的幂)
-nolisten string       不监听协议
-listen string         监听协议
-noreset               不在最后一个客户端退出后重置
-background [none]     创建没有背景的根窗口
-reset                 在最后一个客户端退出后重置
-p #                   屏幕保护程序模式持续时间(分钟)
-pn                    接受在所有端口上监听失败
-nopn                  拒绝在所有端口上监听失败
-r                     关闭自动重复
r                      开启自动重复
-render [default|mono|gray|color] 设置渲染颜色分配策略
-retro                 以经典点状和光标启动
-s #                   屏幕保护程序超时(分钟)
-seat string           运行的座位
-t #                   默认指针阈值(像素/t)
-terminate [delay]     在服务器重置时终止(可选延迟,单位为秒)
-tst                   禁用测试扩展
ttyxx                  从 init 启动的服务器在 /dev/ttyxx
v                      屏幕保护程序的屏幕空白
-v                     无视频空白的屏幕保护程序
-wr                    创建白色背景的根窗口
-maxbigreqsize         设置最大大请求大小
+xinerama              启用 XINERAMA 扩展
-xinerama              禁用 XINERAMA 扩展
-dumbSched             禁用智能调度和线程输入,启用旧行为
-schedInterval int     设置调度程序间隔(毫秒)
-sigstop               启用基于 SIGSTOP 的启动
+extension name        启用扩展
-extension name        禁用扩展
 仅以下扩展可以在运行时启用/禁用:
        Generic Event Extension
        MIT-SHM
        XTEST
        SECURITY
        XINERAMA
        XFIXES
        RENDER
        RANDR
        COMPOSITE
        DAMAGE
        MIT-SCREEN-SAVER
        DOUBLE-BUFFER
        RECORD
        DPMS
        X-Resource
        XVideo
        XVideo-MotionCompensation
        SELinux
        GLX
-query host-name       联系命名主机以获取 XDMCP
-broadcast             广播 XDMCP
-multicast [addr [hops]] IPv6 多播 XDMCP
-indirect host-name    联系命名主机以获取间接 XDMCP
-port port-num         发送消息的 UDP 端口号
-from local-address    指定要连接的本地地址
-once                  在一个会话后终止服务器
-class display-class   指定要发送的显示类以进行管理
-cookie xdm-auth-bits  指定 XDMCP 的魔术 cookie
-displayID display-id  请求的制造商显示 ID
[+-]accessx [ timeout [ timeout_mask [ feedback [ options_mask] ] ] ]
                       启用/禁用 accessx 键序
-ardelay               设置 XKB 自动重复延迟
-arinterval            设置 XKB 自动重复间隔

TinyX 设备相关用法:
-screen WIDTH[/WIDTHMM]xHEIGHT[/HEIGHTMM][+[-]XOFFSET][+[-]YOFFSET][@ROTATION][X][Y][xDEPTH/BPP[xFREQ]]  指定屏幕特性
-rgba rgb/bgr/vrgb/vbgr/none   指定 LCD 面板的子像素顺序
-mouse driver [,n,,options]    指定指针驱动程序及其选项(n 是按钮数量)
-keybd driver [,,options]      指定键盘驱动程序及其选项
-xkb-rules       设置默认 XkbRules 值(可以通过 -keybd 选项覆盖)
-xkb-model       设置默认 XkbModel 值(可以通过 -keybd 选项覆盖)
-xkb-layout      设置默认 XkbLayout 值(可以通过 -keybd 选项覆盖)
-xkb-variant     设置默认 XkbVariant 值(可以通过 -keybd 选项覆盖)
-xkb-options     设置默认 XkbOptions 值(可以通过 -keybd 选项覆盖)
-zaphod          禁用光标屏幕切换
-2button         模拟 3 按钮鼠标
-3button         禁用 3 按钮鼠标模拟
-rawcoord        不在旋转时转换指针坐标
-dumb            禁用硬件加速
-softCursor      强制使用软件光标
-videoTest       启动服务器,短暂停顿后退出
-origin X,Y      在虚拟屏幕中定位下一个屏幕(Xinerama)
-switchCmd       在 vt 切换时执行的命令
vtxx             使用虚拟终端 xx 而不是下一个可用的终端

Xephyr 选项用法:
-parent <XID>        使用现有窗口作为 Xephyr 根窗口
-sw-cursor           在 Xephyr 中以软件方式渲染光标
-fullscreen          尝试以全屏模式运行 Xephyr
-output <NAME>       尝试以全屏模式运行 Xephyr(限制在给定的输出几何形状内)
-grayscale           模拟 8 位灰度
-resizeable          使 Xephyr 窗口可调整大小
-glamor              启用使用 glamor 的 2D 加速
-glamor_gles2        启用使用 glamor 的 2D 加速(仅限 GLES2)
-glamor-skip-present 在使用 glamor 时跳过呈现输出(用于内部测试优化)
-fakexa              使用软件渲染模拟加速
-verbosity <level>   设置日志详细程度
-noxv                不使用 XV
-name [name]         在 WM_CLASS 属性中定义名称
-title [title]       在 WM_NAME 属性中设置窗口标题
-no-host-grab        禁用抓取键盘和鼠标。