在运行时更改 Xvfb 帧缓冲区分辨率

在运行时更改 Xvfb 帧缓冲区分辨率

我跑Xvfb使用命令:

Xvfb :1 -screen 0 100x100x16 -fbdir /tmp

而且运行良好。我可以通过 VNC 连接,现在/tmp目录下有Xvfb_screen0二进制文件。

我认为它会像/dev/fb0这样我尝试更改其设置FB集喜欢:

sudo fbset -fb /tmp/Xvfb_screen0 -xres 500 -yres 500

但命令结束时出现错误:

ioctl FBIOGET_VSCREENINFO:设备的 ioctl 不合适

有什么方法可以更改正在运行的 Xvfb 服务器分辨率吗?

答案1

我不确定 Xvfb 是否支持调整大小。如果您的主要兴趣是 VNC,也许您应该尝试老虎VNC。它是一个支持 RandR 和 Xinerama 的现代 VNC 服务器。屏幕调整大小和多个显示器在 TigerVNC 中运行得很好。

答案2

通过指定−fbdir范围,它正在创造包含帧缓冲内存的内存映射文件,不是帧缓冲设备。

根据fbset手动的-fb仅接受帧缓冲区设备节点,而不接受内存映射文件。所以我相信正确的语法是:

fbset -fb /dev/fb0 500x500

/dev/fb0你的帧缓冲设备在哪里(例如/dev/fb/0/dev/fb0)。

为了让 X 知道帧缓冲设备,定义FRAMEBUFFER变量,例如

export FRAMEBUFFER=/dev/fb0

也可以看看man fbdev更多细节。

要阅读/tmp/Xvfb_screen0,您应该使用xwud命令,例如

xwud -in /var/tmp/Xvfb_screen0

这将显示服务器的屏幕 0。


很可能无法更改现有 X 服务器上的分辨率,因此您可能需要重新运行 Xvfb 服务器,或调用具有不同分辨率的另一个屏幕。

相关内容