Linux
在執行時更改 Xvfb 幀緩衝區解析度
我用命令執行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 伺服器,或者呼叫另一個具有不同解析度的螢幕。