Xvfb 没有启动第二个屏幕

Xvfb 没有启动第二个屏幕

我需要一个在 X 服务器中带有多个假屏幕的 docker 测试平台,根据手册页xvfb 可以启动具有多种分辨率的多个屏幕,但我只得到屏幕 0。

手册页中的一个例子是

Xvfb:1-屏幕 1 1600x1200x16 该服务器将作为服务器 1 号监听连接,并具有默认屏幕配置(一个屏幕,1280x1024x8),屏幕 1 的深度为 16 1600x1200。

但我只得到默认屏幕 0:

# xvfb-run -s '-screen 1 1600x1200x16' xrandr
xrandr: Failed to get size of gamma for output screen
Screen 0: minimum 1 x 1, current 1280 x 1024, maximum 1280 x 1024
screen connected 1280x1024+0+0 0mm x 0mm
   1280x1024      0.00* 

奇怪的是,如果我指定一个帧缓冲区目录,我可以在文件系统中看到它:

# mkdir -p /tmp/x && xvfb-run -s '-screen 1 1600x1200x16 -fbdir /tmp/x' ls /tmp/x
Xvfb_screen0  Xvfb_screen1

但如果我看不到它,那对我来说xrandr毫无用处electron

是我做错了什么吗,还是它没有按照我需要的方式运行?

电子示例:

# echo "let { screen, app } = require('electron'); app.on('ready', () => setTimeout(()=>console.log(screen.getAllDisplays()) && app.quit(),1000))" > foo.js
# xvfb-run -s '-screen 0 800x600x8 -screen 1 1920x1080x16' electron --no-sandbox foo.js
// removed errors
[
  {
    id: 70,
    label: '',
    bounds: { x: 0, y: 0, width: 800, height: 600 },
    workArea: { x: 0, y: 0, width: 800, height: 600 },
    accelerometerSupport: 'unknown',
    monochrome: false,
    colorDepth: 8,
    colorSpace: '{primaries:BT709, transfer:SRGB, matrix:RGB, range:FULL}',
    depthPerComponent: 8,
    size: { width: 800, height: 600 },
    displayFrequency: 0,
    workAreaSize: { width: 800, height: 600 },
    scaleFactor: 1,
    rotation: 0,
    internal: false,
    touchSupport: 'unknown'
  }
]

编辑:这是在 Debian Buster 和 Ubuntu Jammy 上运行的 Docker 容器

相关内容