如何让 xrandr 设置的外部显示器分辨率保持不变

Kaz*_*ark 11 xrandr multi-monitor linux-mint resolution

tl;博士

我的笔记本电脑一直忘记连接到它的外接显示器的正确分辨率。如何使配置“坚持”?

细节

我有一台运行 Linux Mint 的笔记本电脑连接到外部 ViewSonic 显示器。我将其设置为使用外接显示器作为第二个屏幕(即未镜像)。这工作了几个星期。

突然,笔记本电脑不再将其识别为 ViewSonic,此时它不知道其最佳分辨率 ( 1600 x 1200),只允许最大1028 x 768. 1这在我的有1920 x 1200分辨率的笔记本电脑上根本无法正常工作。

在经历了很多挫折之后,我找到了这个答案。它帮助我解决了这个问题,如下(cvt命令的输出是下一个命令中使用的模式行):

cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00
Run Code Online (Sandbox Code Playgroud)

正是我一直希望我能做到的,但不能通过 GUI 做到。(我仍然喜欢命令行是有原因的......)

这再次奏效了一段时间。但是,当我今天启动计算机并登录时,我收到了一个通知区域弹出窗口,其中包含有关无法正常工作的不同尝试模式的一系列错误,并且外部显示器已关闭。我重复了上面的命令,它又开始工作了。

我有一张 nVidia 卡。当事情开始出错时,我尝试安装专有驱动程序,但此时外部显示器根本不再被识别,所以我又回到了开源驱动程序。我没有Xorg.confXorg.conf.d,只有xorg.conf.failsafe

我不想每次启动机器时都重复这些命令。有什么办法可以把它保存到我的Xorg.conf或其他东西吗?我已经很多年没有用 X 做过很多事情了。有人能帮我吗?


1我一直无法确定为什么会发生这种情况。我最好的猜测是有问题的驱动程序更新。

ter*_*don 5

我确定有更好的方法,我认为现在已经全部处理完毕,udev但是如果您知道这些命令会解决它,您可以随时将它们制作成脚本:

#!/usr/bin/env bash
cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00
Run Code Online (Sandbox Code Playgroud)

使其可执行,然后将其添加到桌面环境的启动应用程序中。如果您的 DE 为您提供选项,这可能是最佳选择。


如果您不能执行上述操作,作为一个肮脏的黑客,您可以将它们添加到您的~/.profile

if [ ! -t 0 ] 
then
    cvt 1600 1200
    xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
    xrandr --addmode VGA-1 1600x1200_60.00
fi
Run Code Online (Sandbox Code Playgroud)

if [ ! -t 0 ]应确保这种只在GUI运行,.profile是由薄荷的登录管理器我记得来源。

现在,您应该也可以使用,~/.xsession但我遇到了被忽略的问题。许多较旧的方法正在被替换,我不确定最先进的方法是什么。