Promotion

不得不安利一波i3wm,一款平铺窗口管理器Tiling window manager,喜欢上它的原因就是因为它的简洁性以及便捷性。

首先,我的笔记本操作系统为 Ubuntu 17.10,自带显示器为 1920x1080,再加上一个同样分辨率的显示器(24 寸,DVI 接口),当初并没有找到任何解决办法,只能两台显示器同时显示同样的效果。
现在,抛弃 24 寸显示器,连接上一个 dell 的 2k 显示器(27 寸,HDMI 接口,2560x1440),但是发现只能显示 1920x1080 的区域,剩余的都是无显示的。

Problem

那么,现在遇到的问题就是如何在多显示器且分辨率不同的情况下进行正确的显示呢?

Solution

这里使用xrandr,可以通过它设置屏幕显示的大小,方向,镜像等。当然如果熟练掌握了 xrandr 就可以解决这个问题了。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
xxx@yyy:~$ xrandr // 查询出与电脑连接的显示器的内容

Screen 0: minimum 8 x 8, current 4480 x 1440, maximum 16384 x 16384
eDP-1-1 connected 1920x1080+0+0 (normal left inverted right x axis y axis) 345mm x 194mm
1920x1080 59.91*+
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-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-1 disconnected (normal left inverted right x axis y axis)
HDMI-1-2 connected primary 2560x1440+1920+0 (normal left inverted right x axis y axis) 553mm x 311mm
2560x1440 59.95*+
2048x1152 60.00
1920x1200 59.95
1920x1080 60.00 60.00 50.00 59.94 30.00 25.00 24.00 29.97 23.98
1920x1080i 60.00 50.00 59.94
1600x1200 60.00
1680x1050 59.88
1280x1024 75.02 60.02
1200x960 59.99
1152x864 75.00
1280x720 60.00 50.00 59.94
1024x768 75.03 60.00
800x600 75.00 60.32
720x576 50.00
720x576i 50.00
720x480 60.00 59.94
720x480i 60.00 59.94
640x480 75.00 60.00 59.94
720x400 70.08
DP-1-2 disconnected (normal left inverted right x axis y axis)
HDMI-1-3 disconnected (normal left inverted right x axis y axis)

找到两个显示器标识 eDP-1-1 笔记本显示器 1920x1080)和 HDMI-1-2 (2560x1440),当然以上的显示是我更改之后的效果。

1
2
3
4
5
xrandr --output eDP-1-1 --mode 1920x1080 --pos 0x0 --rotate normal --output -primary --mode 2560x1440 --pos 1920x0 --rotate normal
// 我的显示器的布局为:笔记本在2k显示器的左边,故我设置我的2k显示器的pos的横轴在为笔记本显示器分辨率的横向像素(注:所有的乘号都是使用xyz的x代替)
// 如果想关闭某个显示器直接使用 --output HDMI-1-1 --off
// 可以自定义某个显示器为primary
// 还有其他选项请自行 man xrandr,这足以解决遇到的问题了

当然,不可能每次开机都设置这样的命令,可以尝试在 i3 config 中添加如下内容:

1
exec --no-startup-id xrandr --output eDP-1-1 --mode 1920x1080 --pos 0x0 --rotate normal --output -primary --mode 2560x1440 --pos 1920x0 --rotate normal

这样每次开机就可以完美的适配显式的效果。

Reference

当然这个解决方案来源于:https://faq.i3wm.org/question/2332/flexible-monitor-setup.1.html

Update

最近发现一个替代者-lxrandr,这是一个图形界面的工具,无需手动计算偏移,只需要点击即可轻松配置显示器的分辨率,相对位置,fps。