T450s + Debian9 + NVIDIA Corporation GM108M [GeForce 940M]
1. 比如你要使用 1600x900 的自定义分辨率,先利用 cvt 计算一个新的 modeline
$ lspci -nn | egrep -i "3d|display|vga"
00:02.0 VGA compatible controller [0300]: Intel Corporation HD Graphics 5500 [8086:1616] (rev 09)
04:00.0 3D controller [0302]: NVIDIA Corporation GM108M [GeForce 940M] [10de:1347] (rev a2)
$ cvt 1600 900
输出为:
# 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 创建新的 mode,--newmode 后面跟刚刚 cvt 产生的 modeline 后面的信息,如果去掉“_60.00”就可以在显示器首选项中看到。
sudo xrandr --newmode "1600x900" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
3. 添加新的 mode,--addmode 后面第一个参数是 命令xrandr 显示的列表中,目标输出设备的名称
查看并添加模式:
$ xrandr --listmonitors
Monitors: 1
0: +*eDP-1 1920/309x1080/173+0+0 eDP-1
看到结尾部分为 eDP-1,如果是VGA1则用VGA1取代。
添加新的 mode,--addmode 后面第一个参数是 命令xrandr 显示的列表中,目标输出设备的名称:
sudo xrandr --addmode eDP-1 "1600x900"
将分辨率应用到指定的输出设备:
sudo xrandr --output eDP-1 --mode "1600x900"
屏幕分辨率已经改过来了。但是,美中不足的是,重启还会回到之前的分辨率。
4. 确保重启后保持分辨率
sudo vim /etc/X11/xorg.conf
Section "Monitor"
Identifier "Configured Monitor"
Modeline "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync
Option "PreferredMode" "1600x900"
EndSection
Section "Screen"
Identifier "Default Screen"
Monitor "Configured Monitor"
Device "Configured Video Device"
EndSection
Section "Device"
Identifier "Configured Video Device"
EndSection
如果只做了第一步,重启之后可能会出现类似下面的错误:
Ubuntu 无法应用原保存的显示器配置
所选模式均不匹配可能的模式:
为 CRTC 63 尝试模式
CRTC 63:尝试 800x600@60Hz 模式输出在 1366x768@60Hz (通过 0)
CRTC 63:尝试 2560x1600@60Hz 模式输出在 1366x768@60Hz (通过 0)
CRTC 63:尝试 1920x1440@60Hz 模式输出在 1366x768@60Hz (通过 0)
CRTC 63:尝试 1856x1392@60Hz 模式输出在 1366x768@60Hz (通过 0)
CRTC 63:尝试 1792x1344@60Hz 模式输出在 1366x768@60Hz (通过 0)
CRTC 63:尝试 1920x1200@60Hz 模式输出在 1366x768@60Hz (通过 0)
CRTC 63:尝试 1600x1200@60Hz 模式输出在 1366x768@60Hz (通过 0)
CRTC 63:尝试 1680x1050@60Hz 模式输出在 1366x768@6
解决方法:删除 /home/用户名/.config/monitors.xml
,重启电脑即可。
网友评论