Promotion

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

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

Problem

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

Solution

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

[email protected]:~$ 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),当然以上的显示是我更改之后的效果。

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 中添加如下内容:

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。