在Linux下以编程方式更改屏幕分辨率而无需监视

时间:2015-04-17 06:39:12

标签: c++ c linux screen-resolution xrandr

我正在编写一个GUI程序,它将在OS(CentOS 6.6)启动时执行。

分辨率配置在GUI程序的init部分编程,我现在的解决方案是使用xrandr获取监视器的分辨率集并解析结果并将其设置为其中一个候选人,您可以稍后在GUI程序的Preferences部分中选择其中一个。但如果没有插入监视器,xrandr将无效,对吧?

如果我没有插入显示器的监视器,这意味着我不知道一个显示器可以提供的分辨率(至少不是来自xrandr),所以现在我想要的是,如果我打开计算机和GUI程序将被执行,稍后插入监视器后,我可以看到已经加载到监视器中的GUI程序。

我的意思是,如果没有监视器插入,我想在GUI程序init部分使用一些命令或API修复分辨率(例如1152x864 75.0Hz

是否有人了解可用的commandsAPIs

1 个答案:

答案 0 :(得分:1)

我没有使用/不使用显示器,但是应该可以在没有与xrandr连接的显示器的情况下“灌注”输出。

xrandr --newmode "1024x768_2" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +vsync

定义一个新的固定模式,因为我们不能在没有连接监视器的情况下使用EDID(确保名称是唯一的)。还要确保定义一个可以显示的任何可以想象的显示器的模式(这几乎限制了你对小分辨率VESA兼容模式,否则你可能会损坏旧的固定频率监视器。)

xrandr --addmode <output device> 1024x768_2

将此模式分配给图形卡输出

xrandr --output <output device> 1024x768_2

启用此输出。

将此设置为主显示

xrandr --primary <output device>