如何将显示器设置为其原生分辨率,而此分辨率并未列在分辨率列表中?

安装了Ubuntu 10.04后,我的三星SyncMaster B2030显示器的原生分辨率(1600X900)在分辨率列表中找不到。

2除了使用短期解决方案外,还可以考虑提交一个错误报告,以便在未来的Ubuntu版本中能够正确配置解决方案:$ ubuntu-bug xserver-xorg - ændrük
感谢你的指导,ændrük。已经提交了错误报告,链接为https://bugs.launchpad.net/ubuntu/+source/xorg/+bug/701772。 - Riyaz Mohammed Ibrahim
3个回答

三星SyncMaster B2030的原生分辨率是1600 * 600 60 Hz。
  1. 使用cvt生成模型行:

    cvt 1600 900 60
    

    将得到:

    # 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
    Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
    
  2. 获取显示器连接的输出名称:

    xrandr
    

    其中包含以下内容:

    Screen 0: minimum 320 x 200, current 1600 x 900, maximum 8192 x 8192
    VGA1 connected 1600x900+0+0 (normal left inverted right x axis y axis) 0mm x 0mm
    

    在此示例中,输出名称为VGA1

  3. 创建新的模型行(使用cvt的输出值):

    xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
    

    注意:

    • 上述命令应该写在一行中
    • 注意1600x900_60.00中的x
  4. 添加上述创建的模型行:

    xrandr --addmode VGA1 1600x900_60.00
    
  5. 如果一切顺利,xrandr将列出您新添加的分辨率。

  6. 测试新添加的分辨率:

    xrandr --output VGA1 --mode 1600x900_60.00
    
你使用上述命令设置的分辨率不会在会话之间保持。在Ubuntu 11.04之前,你可以在每次登录时自动设置分辨率,只需在/etc/gdm/Init/Default文件的开头添加以下行:
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00

这个问题描述了使xrandr自定义永久化的其他方法。


你能解释一下第三步中的其他选项吗?118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync 这些值代表什么意思,这样我就可以将其翻译成我需要的方式了。 - Jiew Meng
但是如果xrandr无法识别任何输出名称,特别是不是DVI-0,正如在这个问题中所描述的:http://askubuntu.com/questions/186288/how-to-detect-and-configure-an-output-with-xrandr - ysap
1我为我的Viewsonic G790(1600x1280_76.00原生分辨率)做了这个操作,但出现了一个错误:xrandr --newmode "1600x1280_76.00" 223.00 1600 1728 1896 2192 1280 1283 1290 1339 -hsync +vsync xrandr: 无法获取输出默认值的伽马大小 X请求失败的错误: 名称错误(命名颜色或字体不存在) 失败的请求的主要操作码: 140 (RANDR) 失败的请求的次要操作码: 16 (RRCreateMode) 失败请求的序列号: 19 输出流中当前序列号: 19 - Scooter
感谢您展示如何使用cvt!多年来我一直看到这些模式行,却从未知道如何计算。 - ntc2
1使用现代液晶显示器,您需要使用cvt -r来进行减少空白 - Bharat Khatri

首先,在终端中输入xrandr并查看已连接的设备。在这种情况下,可能是VGA1。如果不是,请在下面的命令中将VGA1替换为您的已连接设备。然后创建一个新文档,并命名为例如:"yourname.sh" 输入以下内容:
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

并将其保存在您的主文件夹中(适用于分辨率1600x900)。通过以下方式使其可执行:
chmod a+x ~/yourname.sh

打开启动应用程序,然后点击“添加”。给它起一个名字,并在命令行中输入。
bash /home/yourname/yourname.sh

点击保存。更改将在您退出并重新登录后生效。

我喜欢这种方法,因为它相当通用。 - Sam Watkins

如果你不想麻烦地按照其他答案中的指示运行所有命令,你可以使用ResolutionX。这是一个为你完成所有操作的工具:
- 执行命令 - 执行、和命令 - 创建一个在登录时执行上述命令的启动文件。