xrandr
是一款官方的扩展配置工具。它可以设置屏幕显示的大小、方向、镜像等,包括对多屏的设置。详细的使用方法可以通过man xrandr
查看。
使用xrandr -q
或者xrandr
命令可以查询当前的显示状态,使用xrandr --verbose
将会显示更详细的信息。
pc:~$ xrandr
Screen 0: minimum 8 x 8, current 1920 x 1080, maximum 32767 x 32767
eDP1 connected primary 1920x1080+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
1920x1080 60.02*+ 59.93
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.00
800x600 60.32 56.25
640x480 59.94
HDMI1 disconnected (normal left inverted right x axis y axis)
VGA1 disconnected (normal left inverted right x axis y axis)
VIRTUAL1 disconnected (normal left inverted right x axis y axis)
以上结果表明eDP1
为主屏,且分辨率为1920x1080
,起始位置为0+0
。
设置分辨率时需要指定设置的output
及mode
,如将eDP1
的分辨率改为1920x1080
,命令就是:
xrandr --output eDP1 --mode 1920x1080
--output
:指定显示器。
--mode
:指定一种有效的分辨率。
--rate
:指定刷新率。
如果xrandr
查询结果中没有合适的分辨率,则可以通过newmode
来添加,下面将给出eDP1
添加1280x1024x60
的分辨率方法。
1. 使用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
sleep 5
以及一条切换到已有分辨率命令,保证不会困在无效分辨率:xrandr --output eDP1 --mode 1280x1024_60.00 && sleep 5 && xrandr --newmode "1920x1080-safe" 173.00 1920 2048 2248 2576 1080 1083 1088 1120 -hsync +vsync && xrandr --addmode eDP1 1920x1080_60.00 && xrandr --output eDP1 --mode 1920x1080_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/****
进行保存。