在Linux下以编程方式更改屏幕分辨率而不使用监视器

Change screen resolution without monitor programmatically under Linux?

本文关键字:分辨率 监视器 屏幕 Linux 编程 方式更      更新时间:2023-10-16

我正在编写一个GUI程序,该程序将在OS(CentOS 6.6)引导时执行。

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

如果我没有在盒子里插入显示器,那意味着我不知道一个显示器能提供什么分辨率设置(至少不知道xrandr),所以现在我想要的是,如果我打开电脑,GUI程序就会执行,稍后插入显示器后,我可以看到GUI程序已经加载在显示器中。

我的意思是,如果没有插入监视器,我希望在GUI程序初始化部分使用一些命令或API来修复分辨率(例如1152x864 75.0Hz)?

有人知道可用的commandsAPIs吗?

我没有在有/没有监视器的情况下尝试过,但应该可以在没有连接xrandr的显示器的情况下"prime"输出。

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>