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 XImages
,Xephyr
提供了比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 禁用抓取键盘和鼠标。