Mac外接显示器开启HiDPI

背景介绍:Mac mini + DELL U2515H(2K)开启 1920X1080 HiDPI。
2K显示器默认的分辨率为2560 X 1440,开启HiDPI时,缩放比例可以不是整数倍,但是修改后的比例也不是随意设定的,经测试下来最大可以支持1920X1080。
由于MacOS只有在连接4K显示器时才会开启HiDPI,对于2K分辨率的显示器只能手动修改了(在外接屏幕强制开启HiDPI,即使是2K屏,也没有原生Retina细腻!)

修改方式有很多中,看个人喜好选择。

不管哪一种方式都需要先关闭MAC的系统保护(SIP):
重启电脑,并在开机声响起后按住command+R进入recovery mode。在更多工具中,找到终端Terminal,在终端输入关闭SIP的命令行语句:csrutil disable,重启。

SwitchResX

收费软件,可以免费试用7天

enable-HiDPI(推荐)

shell脚本,在命令行中输入想要的分辨率后即可

one-key-hidpi

参考文档即可 https://github.com/xzhih/one-key-hidpi

纯手工修改(GEEK专享)

1、关闭SIP,看上面
2、构造显示器配置文件
系统配置里打开HiDPI的开关。在终端中执行以下命令即可。

1
> sudo defaults write /Library/Preferences/com.apple.windowserver.plist DisplayResolutionEnabled -bool true

查看修改结果,返回1表示已修改

1
> sudo defaults read /Library/Preferences/com.apple.windowserver.plist DisplayResolutionEnabled

然后就需要随便在任意地方新建一个文件,用于记录我们想要的分辨率。如上节所述,需要先获得显示器制造商编号(DisplayVendorID)和设备编号(DisplayProductID),可以通过系统命令ioreg获得:

1
2
3
4
5
> ioreg -lw0 | grep IODisplayPrefsKey

# 返回的是16进制值
> ioreg -l | grep DisplayVendorID
> ioreg -l | grep DisplayProductID

这两个值的十进制和十六进制形式都需要用到,方便起见可以直接使用第一个命令,得到16进制表示。例如,我的机器上有如下返回值

1
"IODisplayPrefsKey" = "IOService:/AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/IGPU@2/AppleIntelFramebuffer@0/display0/AppleBacklightDisplay-610-a02f"

注意最后的一段,AppleDisplay-5e3-2490 即可以得到制造商ID为5e3,设备ID为2490,均为16进制。而使用后两个命令,也可以得到这两个值的十进制,即1507和9360
获取到显示器的制造商ID和设备ID后,通过 Display PropertyList Filename 在线工具生成配置文件
其中Scale Resolutions填写:2560x1440、1920x1080、1280x720、1600x900即可,如果需要翻转显示器,把前面的尺寸翻转一下就可以了,不然翻转显示器后不会生效
然后我们得到了一个对应的XML文件,复制出来保存到本地

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>DisplayProductName</key>
<string>DELL U2515H</string>
<key>DisplayProductID</key>
<integer>41007</integer>
<key>DisplayVendorID</key>
<integer>1552</integer>
<key>scale-resolutions</key>
<array>
<data>AAAKAAAABaAAAAABACAAAA==</data>
<data>AAAFAAAAAtAAAAABACAAAA==</data>
<data>AAAHgAAABDgAAAABACAAAA==</data>
<data>AAAGQAAAA4QAAAABACAAAA==</data>
</array>
</dict>
</plist>

点击下载,会得到一个plist文件DisplayProductID-a02f.plist,其实依然是xml格式。下载后文件名不要修改,需要删除后缀,复制到指定目录即可

1
2
> mv DisplayProductID-a02f.plist mv DisplayProductID-a02f
> mv DisplayProductID-a02f /System/Library/Displays/Contents/Resources/Overrides/DisplayVendorID-610/

DisplayVendorID-610中的610对应DisplayVendorID的16进制值,DisplayProductID-a02f中的a02f对应DisplayProductID的16进制值

三、应用分辨率
重启电脑。使用 Retina Display Manager(RDM) 开源工具修改分辨率

JouyPub wechat
欢迎订阅「K叔区块链」 - 专注于区块链技术学习