Ubuntu设置屏幕分辨率

近来配了几台有图形界面的Ubuntu服务器。安装好后经常遇到的一个问题就是屏幕分辨率不理想。安装好后初始的屏幕分辨率非常低,插上现在常用的1920*1080分辨率的显示器看起来很难受。并且在菜单里面根本就没有1920这个选项可以选。这里记录下解决的过程。

虽然还不太明白为什么刚刚安装好后的系统为什么不能自动适配显示器的分辨率,但是好在找到了解决方案。过程还是比较简单的。

查看当前支持的分辨率

使用xrandr命令来查看当前支持的分辨率。

1
2
3
4
5
6
7
8
9
10
➜  ~ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 4096 x 4096
VGA-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
1024x768 60.00
800x600 60.32 56.25
848x480 60.00
640x480 59.94
1280x1024_60.00 59.89
1368x768_60.00 59.88
1920x1080_60.00 59.96*

列表中尾巴上带*号的就是当前使用的模式。

这里可以看到有1280、1368、1920几个模式。如果列表里直接就有你想要的分辨率那万事大吉,直接在设置界面应该就可以更改了。

上面的输出是我在自己配置好的机器上执行的,事实上最初根本没有最下面三行的分辨率,最多只能设置1024*768的模式。

现在讲讲如何添加自定义的分辨率来适配屏幕。

添加自定义分辨率

使用cvt命令来计算屏幕设置参数。
设置屏幕分辨率涉及到的参数比较复杂,除非非常了解,不然是很难设置的。cvt命令只需要输入想要的分辨率以及刷新率就可以自动计算好其他的参数了。

1
2
3
➜  ~ cvt 1920 1080 60
# 1920x1080 59.96 Hz (CVT 2.07M9) hsync: 67.16 kHz; pclk: 173.00 MHz
Modeline "1920x1080_60.00" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync

以1920*1080 60Hz为例
Modeline后面的内容就是我们需要的分辨率模式参数了。

获取到了正确的参数,下一步就是创建这一模式了。

1
xrandr --newmode "1920x1080_60.00"  173.00  1920 2048 2248 2576  1080 1083 1088 1120 -hsync +vsync

xrandr命令用来新建分辨率。这时候再输入xrandr命令就可以看到我们新增加的分辨率了。

下一步,使我们新增的分辨率生效,让系统按照指定的分辨率输出。

1
xrandr --addmode VGA-1 "1920x1080_60.00"

addmode后面跟两个参数,第一个参数是指定设置的屏幕,第二个是要设置的模式名。

我这里设置的屏幕是VGA-1,在输入xrandr命令后,会看到各个显示器的编号。

再贴一遍最开始出现的那段结果

1
2
3
4
5
6
7
8
9
10
➜  ~ xrandr
Screen 0: minimum 320 x 200, current 1920 x 1080, maximum 4096 x 4096
VGA-1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 477mm x 268mm
1024x768 60.00
800x600 60.32 56.25
848x480 60.00
640x480 59.94
1280x1024_60.00 59.89
1368x768_60.00 59.88
1920x1080_60.00 59.96*

第二行就是VGA-1,因为我只插了一台显示器。根据你连接的显示器不同,这里的编号也可能不同,要根据自己的情况去设置正确。

执行完这一步之后,应该有些电脑的分辨率已经变成了新设置的模式了。

如果还没有,那么需要手动来切换一下。

1
➜  ~ xrandr --output VGA-1 --mode "1920x1080_60.00"

如果不出意外这时候设置已经生效了。

事实上在执行完--addmode命令之后,去设置界面就已经可以看到下拉菜单里存在新设置的模式了,就可以用鼠标点着来操作了。

保存分辨率

设置好后,如果关机重启,那还是会丢失这套配置的。

可以把这个流程,其实也就newmode addmode output三步,做成脚本,开机启动。