macOS 下开启显示器 HiDPI 方法

备份文件

In Google Cloud

系统环境

操作系统:MacOS

显示器型号:DELL2515H

显示器分辨率:2560 * 1440 2K

MacOS 系统获取系统权限方法

MacOS 系统下,某些系统文件夹只有系统有权限读写,称为 System Integrity Protection(SIP),需要提前关闭。

创建相应文件夹和文件

首先在终端获取显示器的 DisplayVendorID 和 DisplayProductID。

1# 获取显示器 DisplayVendorID
2ioreg -l | grep "DisplayVendorID"
3
4# 获取显示器 DisplayProductID
5ioreg -l | grep "DisplayProductID"

在桌面新建一个文件夹,名称格式为 DisplayVendorID-xxxx,其中 xxxx 为显示器 DisplayVendorID 的 16 进制小写

在刚创建的文件夹中新建空白文件,名称格式为 DisplayProductID-xxxx,其中 xxxx 为显示器 DisplayProductID 的 16 进制小写

以上步骤可使用脚本 patch-edid.rb 自动生成。

生成步骤:

  1. 下载或手动创建文件 patch-edid.rb 到桌面目录
  2. 打开终端进入桌面目录
  3. 执行命令 ruby patch-edid.rb
  4. 脚本会在桌面目录创建好文件夹和文件(文件内容也有,但可能没有效果)

编辑新建的文件

<?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>DisplayProductID</key>
    <integer>53358</integer>
    <key>DisplayVendorID</key>
    <integer>4268</integer>
    <key>scale-resolutions</key>
    <array>
        <data>AAAKAAAABXgAAAABACAAAA==</data>
        <data>AAAUAAAACvAAAAABACAAAA==</data>
        <data>AAAHgAAABDgAAAABACAAAA==</data>
        <data>AAAPAAAACHAAAAABACAAAA==</data>
        <data>AAAGQAAAA4QAAAABACAAAA==</data>
        <data>AAAMgAAABwgAAAABACAAAA==</data>
        <data>AAAFAAAAAtAAAAABACAAAA==</data>
        <data>AAAKAAAABaAAAAABACAAAA==</data>
    </array>
</dict>
</plist>

该文件是 XML 格式的,在 Mac 中被称为 plist(Property List)文件,即属性列表文件。可以使用工具 PlistPro 来编辑。

文件中共有 8 个 data 标签,其中每两个为一组,即(1,2)、(3,4)、(5,6)、(7,8),每一个 data 标签表示一个分辨率。

 1# data 标签解码后
 2'''
 300000A00 000005A0 00000001 00200000
 400001400 00000B40 00000001 00200000
 5
 600000780 00000438 00000001 00200000
 700000F00 00000870 00000001 00200000
 8
 900000640 00000384 00000001 00200000
1000000C80 00000708 00000001 00200000
11
1200000500 000002D0 00000001 00200000
1300000A00 000005A0 00000001 00200000
14'''
15
16# 转为十进制
17
18'''
192560 1440 1 2097152
205120 2880 1 2097152
21
221920 1080 1 2097152
233840 2160 1 2097152
24
251600 900  1 2097152
263200 1800 1 2097152
27
281280 720  1 2097152
292560 1440 1 2097152
30'''

可见每组 data 标签中,第一个 data 标签为我们需要 HiDPI 的分辨率,第二个 data 标签是第一个标签分辨率的两倍。

可以根据自己的显示器随意填多个 data 标签组,编辑文件时需要填十六进制

使用新建的 HiDPI 分辨率

将新建的文件夹整个拷贝到目录 /System/Library/Displays/Contents/Resources/Overrides/ 中,如果有重复的文件夹,建议先把原来的文件夹备份。重启之后就可以生效了。

可以使用工具 SwitchResX 或 RDM(RetinaDisplayMenu) 来切换不同分辨率。

参考 & 扩展