使用环境是Deepin,理论上其他Linux也适用。
显示器位置说明
笔记本内置显示器是eDP1,1920x1080,放在左边,卖家说这是块2K屏幕,外置显示器是DP2,3840x2160的4K屏幕,作为主显示器
设置系统缩放
在各自系统内置的设置参数处,设置DPI为2倍缩放
如果你是非Deepin系统,比如Gnome Shell
1 2 |
gsettings set org.gnome.settings-daemon.plugins.xsettings overrides "[{'Gdk/WindowScalingFactor', <2>}]" gsettings set org.gnome.desktop.interface scaling-factor 2 |
设置驱动参数
我的笔记本是Intel核心显卡,如果不设置这个Xorg参数,会在后面设置X的scale后,高分屏上出现鼠标闪烁问题
1 2 3 4 5 6 |
sudo tee <<EOF /etc/X11/xorg.conf.d/20-intel.conf Section "Device" Identifier "Intel Graphics" Driver "intel" EndSection EOF |
注意,设置后,原来在xrandr显示的eDP-1,DP-2等显接口命名规则会变成eDP1,DP2等风格
相关问题在很多地方有讨论,不同驱动看来需要不同配置,可以看这个Xorg的Open Issue
注销后重新登录让设置生效
配置缩放
登录后会发现4K的屏幕缩放正常的 ,1920*1080那块屏幕显示的很大很大,执行命令后就正常了
1 |
xrandr --output eDP1 --scale 2x2 --mode 1920x1080 --pos 0x0 --output DP2 --mode 3840x2160 --pos 3840x0 --primary |
pos是这么计算的,因为我是并排摆放的,这时候eDP1在左边,他的屏幕原点是0x0,然后因为eDP1用scale缩小了2倍,所以他的适配分辨率是1920*2x1080*2,那么,位于右边的4K屏幕,她的起点就是1920*2=3840,高度不变,因为在同一水平线,不做上下移动,最后的pos就是3840x0
所以在我这块低DPI的2K屏幕上,我设置scale 1.5x.15 效果更好,那么就是这么个结果
1 |
xrandr --output eDP1 --scale 1.5x1.5 --mode 1920x1080 --pos 0x0 --output DP2 --mode 3840x2160 --pos 2880x0 --primary |
如果你需要其他缩放比例,请按照上面的规则重新计算就行。一般都是2倍缩放的话都能满足这个用例。
据说Wayland原生支持混合DPI,快来吧。