当前屏幕分辨率是否保存到文件中?

当前屏幕分辨率是否保存到文件中?

我正在尝试执行一组低级别的函数来获取和设置显示分辨率,我想知道是否有一个文件仅包含所使用的分辨率并且可用于更改它。

我知道我可以在 Xorg 设置文件中找到我正在寻找的部分内容,但它不仅仅包含活动分辨率。

到目前为止,我发现的所有内容都需要使用 Xorg 或,xrandr并且我希望找到一种仅通过在文件中读/写来实现此目的的方法。

答案1

当前分辨率存储在 X 服务器的内存中。它不存储在文件中。

Xorg 设置文件不会帮助您,因为它只包含初始配置(并且可能根本不存在),但可以动态调用解析。

(我认为该解决方案实际上出现在 X 服务器日志中,但不能保证您可以访问日志 - 例如,如果您远程访问服务器 - 即使您这样做,您也必须解析日志这是一项繁重的工作并且容易出错。)

称呼xrandr。这就是它的用途。您不必担心没有它的环境:它是一个基本工具,是标准 X11 客户端发行版的一部分。

如果您需要在早于xrandr15 年历史的古老系统上运行,您可以调用xdpyinfo,它已经成为标准 X11 客户端发行版的一部分已有二十多年了。

答案2

因此,在尝试了前面的答案后,我确信但并不完全满意。我继续研究了一下,终于找到了我要找的东西。实际上有一个文件包含屏幕的分辨率,另一个文件包含屏幕支持的所有分辨率(由其 EDID 提供)。

这些文件可以在/sys/class/graphics与帧缓冲区(通常是 fb0)对应的目录中找到。感兴趣的文件被称为mode(包含当前分辨率)和modes(包含屏幕支持的每个分辨率)。

要更改分辨率,必须执行以下操作: echo your-resolution > mode,其中your-resolution恰好是文件的行之一modes

这里举一个具体的例子来说明。我想将分辨率设置为 VESA 标准。我的屏幕允许的分辨率定义如下:

# 猫模式
D:1920x1080p-60
小:1280x720p-50
小:1280x720p-60
小:1920x1080p-50
小:1920x1080p-60
小:640x480p-60
小:720x480p-60
小:720x576p-50
视频:640x480p-60

我需要做的就是echo V:640x480p-60 > mode将屏幕分辨率变为 640x480。

相关内容