Linux

在執行時更改 Xvfb 幀緩衝區解析度

  • November 24, 2016

我用命令執行Xvfb :

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

它工作正常。我可以通過 VNC 連接,現在在/tmp目錄下我有Xvfb_screen0二進製文件。

我認為它會像/dev/fb0這樣,所以我嘗試使用fbset更改其設置,例如:

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

但命令以錯誤結束:

ioctl FBIOGET_VSCREENINFO:設備的 ioctl 不合適

有什麼方法可以改變正在執行的 Xvfb 伺服器解析度嗎?

我不確定 Xvfb 是否支持調整大小。如果您的主要興趣是 VNC,也許您應該嘗試TigerVNC。它是支持 RandR 和 Xinerama 的現代 VNC 伺服器。螢幕大小調整和多顯示器在 TigerVNC 中執行良好。

通過指定−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 伺服器,或者呼叫另一個具有不同解析度的螢幕。

引用自:https://unix.stackexchange.com/questions/295017