使用xrandr配置分辨率

场景描述

用户使用外接显示器时,在调整分辨率的时候(控制中心–显示–分辨率)时,发现分辨率的选项中并没有实际物理上支持的最高选项,例如外接显示屏最高分辨率可能1920×1080(60HZ),于是想将分辨率调节到最佳模式(即最高分辨率)。请注意,实际使用最高分辨率时,一定要确认原有刷新频率是多少,例如,最高分辨率是2560×1440,默认60HZ会导致设置失败,需要设置为50HZ!

使用工具

xrandr:是一款官方的扩展配置工具。它可以设置屏幕显示的大小、方向、镜像等,包括对多屏的设置。详细的使用方法可以通过man xrandr查看EXAMPLE,有简单的使用说明,如下:

   EXAMPLES
          Sets  an  output called LVDS to its preferred mode, and on its right put an output called VGA
          to preferred mode of a screen which has been physically rotated clockwise:
                 xrandr --output LVDS --auto --rotate normal --pos 0x0  --output  VGA  --auto  --rotate
                 left --right-of LVDS

          Forces to use a 1024x768 mode on an output called VGA:
                 xrandr --newmode "1024x768" 63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
                 xrandr --addmode VGA 1024x768
                 xrandr --output VGA --mode 1024x768

          Enables panning on a 1600x768 desktop while displaying 1024x768 mode on an output called VGA:
                 xrandr --fb 1600x768 --output VGA --mode 1024x768 --panning 1600x0

          Have  one small 1280x800 LVDS screen showing a small version of a huge 3200x2000 desktop, and
          have a big VGA screen display the surrounding of the mouse at normal size.
                 xrandr --fb 3200x2000 --output LVDS --scale 2.5x2.5 --output VGA --pos  0x0  --panning
                 3200x2000+0+0/3200x2000+0+0/64/64/64/64

          Displays  the VGA output in trapezoid shape so that it is keystone corrected when the projec‐
          tor is slightly above the screen:
                 xrandr --fb 1024x768 --output VGA --transform 1.24,0.16,-124,0,1.24,0,0,0.000316,1

cvt:适用于计算VESA CVT mode lines的小工具。

指定分辨率解决方法

用户实际使用的外接显示器最高分辨率为2560×1440。

查询分辨率

打开命令行终端,输入xrandr,列出当前能检测到的分辨率:

Screen 0: minimum 320 x 200, current 1920 x 2160, maximum 8192 x 8192
   eDP-1 connected primary 1920x1080+0+1080 (normal left inverted right x axis y axis) 293mm x 165mm
      1920x1080     60.00*+  59.93    40.00  
      1680x1050     59.95    59.88  
      1600x1024     60.17  
      1400x1050     59.98  
      1280x1024     60.02  
      1440x900      59.89  
      1280x960      60.00  
      1360x768      59.80    59.96  
      1152x864      60.00  
      1024x768      60.04    60.00  
      960x720       60.00  
      928x696       60.05  
      896x672       60.01  
      960x600       60.00  
      960x540       59.99  
      800x600       60.00    60.32    56.25  
      840x525       60.01    59.88  
      800x512       60.17  
      700x525       59.98  
      640x512       60.02  
      720x450       59.89  
      640x480       60.00    59.94  
      680x384       59.80    59.96  
      576x432       60.06  
      512x384       60.00  
      400x300       60.32    56.34  
      320x240       60.05  
   DP-1 disconnected (normal left inverted right x axis y axis)
   HDMI-1 disconnected (normal left inverted right x axis y axis)
   HDMI-2 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
      1920x1080     60.00*   50.00    59.94  
      1920x1080i    60.00    50.00    59.94  
      1680x1050     59.95  
      1280x1024     75.02    60.02  
      1440x900      59.89  
      1280x800      59.81  
      1280x720      60.00    50.00    59.94  
      1024x768      75.03    70.07    60.00  
      800x600       72.19    75.00    60.32    56.25  
      720x576       50.00  
      720x576i      50.00  
      720x480       60.00    59.94  
      720x480i      60.00    59.94  
      640x480       75.00    72.81    60.00    59.94  
      720x400       70.08  

由上面的显示可知,默认分辨率为1920×1080,列表中无2560×1440的选项

输入“cvt 2560 1440 50”获取,要生成 2560×1440分辨率所需的显示模式:

 # 2560x1440 50.00 Hz (CVT 3.69M9) hsync: 89.52 kHz; pclk: 312.25 MHz
 Modeline "2560x1440_50.00"  312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync

请注意,一般情况下可以不用修改刷新频率,采用系统识别的默认值,即执行“cvt 2560 1440”。 如果在后面操作中出现类似“xrandr: Configure crtc 1 failed”错误提示,可以减低刷新频率进行设置。

创建并设置分辨率

输入以下命令:

 #使用cvt获取的信息(即Modeline后显示的内容),新建一个显示模式    
 sudo xrandr  --newmode "2560x1440_50.00"  312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync

 #将新建的显示模式添加到DVI-0中(从xrandr显示的信息中可获去--第三行)
 xrandr --addmode HDMI-2 2560x1440_50.00

 #选择HDMI-2输出,并将其输出模式设置为2560x1440_50.00(上个命令设置的模式名)
 #此命令即可将分辨率设置为目标分辨率
 sudo xrandr --output HDMI-2 --mode 2560x1440_50.00

请注意,如果执行该命令有如下提示,请考虑是否需要调低刷新频率!

 xrandr: Configure crtc 1 failed

此时,再输入xrandr,即有以下信息(*表示当前选择的分辨率)

   Screen 0: minimum 320 x 200, current 1920 x 2160, maximum 8192 x 8192
   eDP-1 connected primary 1920x1080+0+1080 (normal left inverted right x axis y axis) 293mm x 165mm
      1920x1080     60.00*+  59.93    40.00  
      1680x1050     59.95    59.88  
      1600x1024     60.17  
      1400x1050     59.98  
      1280x1024     60.02  
      1440x900      59.89  
      1280x960      60.00  
      1360x768      59.80    59.96  
      1152x864      60.00  
      1024x768      60.04    60.00  
      960x720       60.00  
      928x696       60.05  
      896x672       60.01  
      960x600       60.00  
      960x540       59.99  
      800x600       60.00    60.32    56.25  
      840x525       60.01    59.88  
      800x512       60.17  
      700x525       59.98  
      640x512       60.02  
      720x450       59.89  
      640x480       60.00    59.94  
      680x384       59.80    59.96  
      576x432       60.06  
      512x384       60.00  
      400x300       60.32    56.34  
      320x240       60.05  
   DP-1 disconnected (normal left inverted right x axis y axis)
   HDMI-1 disconnected (normal left inverted right x axis y axis)
   HDMI-2 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 597mm x 336mm
      1920x1080     60.00   50.00    59.94  
      1920x1080i    60.00    50.00    59.94  
      1680x1050     59.95  
      1280x1024     75.02    60.02  
      1440x900      59.89  
      1280x800      59.81  
      1280x720      60.00    50.00    59.94  
      1024x768      75.03    70.07    60.00  
      800x600       72.19    75.00    60.32    56.25  
      720x576       50.00  
      720x576i      50.00  
      720x480       60.00    59.94  
      720x480i      60.00    59.94  
      640x480       75.00    72.81    60.00    59.94  
      720x400       70.08  
      2560x1440_50.00  50.00*

尝试增加到配置

将分辨率设置为开机默认的分辨率,即通过控制中心–显示–分辨率,即可选择对应的分辨率。
若不能设置,可以简单粗暴一些,通过以下方式设置。即编辑sudo vi ~/.profile,在 ~/.profile 最末尾添加修改分辨率的命令:

 xrandr --newmode "2560x1440_50.00"   312.25  2560 2752 3024 3488  1440 1443 1448 1493 -hsync +vsync
 xrandr --addmode HDMI-2 2560x1440_50.00

双屏设置的解决办法

先看单屏设置

使用xrandr -q或者xrandr命令可以查询当前的显示状态,使用xrandr –verbose将会显示更详细的信息。

   $ xrandr
   Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
   LVDS-1 connected primary 1366x768+0+0 (normal left inverted right x axis y axis) 277mm x 156mm
      1366x768      60.10*+
      1360x768      59.80    59.96  
      1024x768      60.04    60.00  
      960x720       60.00  
      928x696       60.05  
      896x672       60.01  
      960x600       60.00  
      960x540       59.99  
      800x600       60.00    60.32    56.25  
      840x525       60.01    59.88  
      800x512       60.17  
      700x525       59.98  
      640x512       60.02  
      720x450       59.89  
      640x480       60.00    59.94  
      680x384       59.80    59.96  
      576x432       60.06  
      512x384       60.00  
      400x300       60.32    56.34  
      320x240       60.05  
   VGA-1 disconnected (normal left inverted right x axis y axis)
   HDMI-1 disconnected (normal left inverted right x axis y axis)
   DP-1 disconnected (normal left inverted right x axis y axis)
   HDMI-2 disconnected (normal left inverted right x axis y axis)
   HDMI-3 disconnected (normal left inverted right x axis y axis)
   DP-2 disconnected (normal left inverted right x axis y axis)
   DP-3 disconnected (normal left inverted right x axis y axis)

以上结果表明LVDS-1为主屏,且分辨率为1366×768 ,起始位置为0+0。

设置分辨率时需要指定设置的output及mode,如将LVDS-1的分辨率改为1920×1080,命令就是:

 xrandr --output eDP1 --mode 1920x1080 
 --output:指定显示器。 
 --mode:指定一种有效的分辨率。 
 --rate:指定刷新率。

添加有效分辨率:如果xrandr查询结果中没有合适的分辨率,则可以通过newmode来添加,下面将给出eDP1添加1280x1024x60的分辨率方法。

使用cvt生成一个modeline,命令如下:

 $ cvt 1280  1024  60
 #1280x1024 59.89 Hz (CVT 1.31M4) hsync: 63.67 kHz; pclk: 109.00 MHz
 Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync

使用newmode创建一个mode,参数就是上面的modeline后的内容,命令如下:

 xrandr --newmode "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync

新建模式,将新模式添加至当前输出设备:

 xrandr --addmode eDP1 1280x1024_60.00

如果出错,则说明不支持此模式。

设置newmode为当前分辨率:

 xrandr --output eDP1 --mode 1280x1024_60.00

再看双屏设置

如现在有两个output,分别为eDP1和HDMI1。

设置主屏

 xrandr --auto --output eDP1 --primary
 ---auto:可以自动启用关闭的屏幕。 
 ---primary:设置主屏。

复制模式

 xrandr --auto --output eDP1 --pos 0x0 --mode 1920x1080 --output HDMI1 --same-as eDP1
 ---pos:起始位置,x。 
 ---same-as:与eDP1输出保持一致。

扩展模式

xrandr --auto --output eDP1 --pos 0x0 --mode 1920x1080 --primary --output HDMI1 --mode 1024x768 --right-of eDP1
 --right-of:HDMI1的起始位置在eDP1的右边。

命令的结果就是HDM1 会在 eDP1 的右边,eDP1 为主屏,另外位置的参数还有 –left-of, –above, –below 等。

如果需要自定义两个屏幕的位置, 可以通过计算每个屏幕的分辨率, 用 –pos 参数来指定每个屏幕显示的位置。

单屏模式

 xrandr --output eDP1 --pos 0x0 --mode 1920x1080 --primary --output VGA1 --off
 --off:关闭某个屏幕.

自定义模式
另外屏幕的旋转, 镜像和缩放可以分别使用 –rotate, –reflect 和 –scale 参数来实现.

永久保存
如果需要永久保存配置,可以通过更改/etc/X11/xorg.conf或者/etc/X11/xorg.conf.d/****进行保存。

发表评论

电子邮件地址不会被公开。 必填项已用*标注