2018-04-02 13:59:50 -05:00
|
|
|
|
#!/bin/sh
|
2018-04-02 15:30:49 -05:00
|
|
|
|
#
|
|
|
|
|
# 初始化
|
2018-04-02 13:59:50 -05:00
|
|
|
|
function init()
|
|
|
|
|
{
|
|
|
|
|
#
|
|
|
|
|
cat << EEF
|
|
|
|
|
----------------------------------------
|
|
|
|
|
|*************** HIDPI ****************|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
EEF
|
|
|
|
|
#
|
|
|
|
|
VendorID=$(ioreg -l | grep "DisplayVendorID" | awk '{print $8}')
|
|
|
|
|
ProductID=$(ioreg -l | grep "DisplayProductID" | awk '{print $8}')
|
|
|
|
|
EDID=$(ioreg -l | grep "IODisplayEDID" | awk '{print $8}' | sed -e 's/.$//' -e 's/^.//')
|
|
|
|
|
|
|
|
|
|
Vid=$(echo "obase=16;$VendorID" | bc | tr 'A-Z' 'a-z')
|
|
|
|
|
Pid=$(echo "obase=16;$ProductID" | bc | tr 'A-Z' 'a-z')
|
|
|
|
|
|
|
|
|
|
edID=$(echo $EDID | sed 's/../b5/21')
|
|
|
|
|
|
|
|
|
|
EDid=$(echo $edID | xxd -r -p | base64)
|
|
|
|
|
thisDir=$(dirname $0)
|
|
|
|
|
thatDir="/System/Library/Displays/Contents/Resources/Overrides"
|
|
|
|
|
|
|
|
|
|
Overrides="\/System\/Library\/Displays\/Contents\/Resources\/Overrides\/"
|
|
|
|
|
|
|
|
|
|
DICON="com\.apple\.cinema-display"
|
|
|
|
|
|
|
|
|
|
imacicon=${Overrides}"DisplayVendorID-610\/DisplayProductID-a032.tiff"
|
|
|
|
|
|
|
|
|
|
mbpicon=${Overrides}"DisplayVendorID-610\/DisplayProductID-a030-e1e1df.tiff"
|
|
|
|
|
|
|
|
|
|
mbicon=${Overrides}"DisplayVendorID-610\/DisplayProductID-a028-9d9da0.tiff"
|
|
|
|
|
|
|
|
|
|
lgicon=${Overrides}"DisplayVendorID-1e6d\/DisplayProductID-5b11.tiff"
|
|
|
|
|
|
|
|
|
|
if [[ ! -d $thatDir/backup ]]; then
|
2018-04-02 15:30:49 -05:00
|
|
|
|
echo "正在备份"
|
2018-04-02 13:59:50 -05:00
|
|
|
|
sudo mkdir -p $thatDir/backup
|
|
|
|
|
sudo cp $thatDir/Icons.plist $thatDir/backup/
|
2018-04-02 15:30:49 -05:00
|
|
|
|
if [[ -d $thatDir/DisplayVendorID-$Vid ]]; then
|
|
|
|
|
sudo cp -r $thatDir/DisplayVendorID-$Vid $thatDir/backup/
|
|
|
|
|
fi
|
2018-04-02 13:59:50 -05:00
|
|
|
|
fi
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-02 15:30:49 -05:00
|
|
|
|
# 选择ICON
|
2018-04-02 13:59:50 -05:00
|
|
|
|
function choose_icon()
|
|
|
|
|
{
|
|
|
|
|
#
|
2018-06-07 20:12:54 -05:00
|
|
|
|
rm -rf $thisDir/tmp/
|
|
|
|
|
mkdir -p $thisDir/tmp/
|
2018-04-02 13:59:50 -05:00
|
|
|
|
curl -fsSL https://raw.githubusercontent.com/xzhih/one-key-hidpi/master/Icons.plist -o $thisDir/tmp/Icons.plist
|
|
|
|
|
# curl -fsSL http://127.0.0.1:8080/Icons.plist -o $thisDir/tmp/Icons.plist
|
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
cat << EOF
|
|
|
|
|
----------------------------------------
|
|
|
|
|
|********** 选择要显示的ICON ***********|
|
|
|
|
|
----------------------------------------
|
|
|
|
|
(1) iMac
|
|
|
|
|
(2) MacBook
|
|
|
|
|
(3) MacBook Pro
|
|
|
|
|
(4) LG 显示器
|
|
|
|
|
(5) 保持原样
|
|
|
|
|
|
|
|
|
|
EOF
|
2018-06-07 20:12:54 -05:00
|
|
|
|
|
2018-04-02 13:59:50 -05:00
|
|
|
|
read -p "输入你的选择[1~5]: " logo
|
|
|
|
|
case $logo in
|
|
|
|
|
1) Picon=$imacicon
|
|
|
|
|
RP=("33" "68" "160" "90")
|
|
|
|
|
;;
|
|
|
|
|
2) Picon=$mbicon
|
|
|
|
|
RP=("52" "66" "122" "76")
|
|
|
|
|
;;
|
|
|
|
|
3) Picon=$mbpicon
|
|
|
|
|
RP=("40" "62" "147" "92")
|
|
|
|
|
;;
|
|
|
|
|
4) Picon=$lgicon
|
|
|
|
|
RP=("11" "47" "202" "114")
|
|
|
|
|
DICON=${Overrides}"DisplayVendorID-1e6d\/DisplayProductID-5b11.icns"
|
|
|
|
|
;;
|
|
|
|
|
5) rm -rf $thisDir/tmp/Icons.plist
|
|
|
|
|
;;
|
2018-06-07 20:12:54 -05:00
|
|
|
|
*)
|
|
|
|
|
|
|
|
|
|
echo "输入错误,拜拜";
|
2018-04-02 13:59:50 -05:00
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
|
|
|
|
|
if [[ $Picon ]]; then
|
|
|
|
|
sed -i '' "s/VID/$Vid/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
sed -i '' "s/PID/$Pid/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
sed -i '' "s/RPX/${RP[0]}/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
sed -i '' "s/RPY/${RP[1]}/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
sed -i '' "s/RPW/${RP[2]}/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
sed -i '' "s/RPH/${RP[3]}/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
sed -i '' "s/PICON/$Picon/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
sed -i '' "s/DICON/$DICON/g" $thisDir/tmp/Icons.plist
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
2018-04-02 15:30:49 -05:00
|
|
|
|
# 主函数
|
2018-04-02 13:59:50 -05:00
|
|
|
|
function main()
|
|
|
|
|
{
|
2018-04-02 15:30:49 -05:00
|
|
|
|
sudo mkdir -p $thisDir/tmp/DisplayVendorID-$Vid
|
2018-04-02 13:59:50 -05:00
|
|
|
|
dpiFile=$thisDir/tmp/DisplayVendorID-$Vid/DisplayProductID-$Pid
|
2018-04-02 15:30:49 -05:00
|
|
|
|
sudo chmod -R 777 $thisDir/tmp/
|
2018-04-02 13:59:50 -05:00
|
|
|
|
|
|
|
|
|
#
|
|
|
|
|
cat > "$dpiFile" <<-\HIDPI
|
|
|
|
|
<?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>PID</integer>
|
|
|
|
|
<key>DisplayVendorID</key>
|
|
|
|
|
<integer>VID</integer>
|
|
|
|
|
<key>IODisplayEDID</key>
|
2018-04-02 15:30:49 -05:00
|
|
|
|
<data>EDid</data>
|
2018-04-02 13:59:50 -05:00
|
|
|
|
<key>scale-resolutions</key>
|
|
|
|
|
<array>
|
2018-06-07 20:12:54 -05:00
|
|
|
|
<!-- 1840x1035 -->
|
|
|
|
|
<!-- <data>AAAOYAAACBYA</data> -->
|
|
|
|
|
<!-- <data>AAAOYAAACBYAAAABACAAAA==</data> -->
|
|
|
|
|
<!-- <data>AAAOYAAACBYAAAAJAKAAAA==</data> -->
|
|
|
|
|
|
|
|
|
|
<!-- 1760x990 -->
|
|
|
|
|
<!-- <data>AAANwAAAB7wA</data> -->
|
|
|
|
|
<!-- <data>AAANwAAAB7wAAAABACAAAA==</data> -->
|
|
|
|
|
<!-- <data>AAANwAAAB7wAAAAJAKAAAA==</data> -->
|
|
|
|
|
|
|
|
|
|
<!-- 1680x945 -->
|
|
|
|
|
<data>AAANIAAAB2IA</data>
|
|
|
|
|
<data>AAANIAAAB2IAAAABACAAAA==</data>
|
|
|
|
|
<data>AAANIAAAB2IAAAAJAKAAAA==</data>
|
|
|
|
|
|
|
|
|
|
<!-- 1440x810 -->
|
|
|
|
|
<data>AAALQAAABlQA</data>
|
|
|
|
|
<data>AAALQAAABlQAAAABACAAAA==</data>
|
|
|
|
|
<data>AAALQAAABlQAAAAJAKAAAA==</data>
|
|
|
|
|
|
|
|
|
|
<!-- 1280x720 -->
|
|
|
|
|
<data>AAAKAAAABaAA</data>
|
|
|
|
|
<data>AAAKAAAABaAAAAABACAAAA==</data>
|
|
|
|
|
<data>AAAKAAAABaAAAAAJAKAAAA==</data>
|
|
|
|
|
|
|
|
|
|
<!-- 1024x576 -->
|
|
|
|
|
<data>AAAIAAAABIAA</data>
|
|
|
|
|
<data>AAAIAAAABIAAAAABACAAAA==</data>
|
|
|
|
|
<data>AAAIAAAABIAAAAAJAKAAAA==</data>
|
|
|
|
|
|
|
|
|
|
<!-- 960x540 -->
|
|
|
|
|
<data>AAAHgAAABDgA</data>
|
|
|
|
|
<data>AAAHgAAABDgAAAABACAAAA==</data>
|
|
|
|
|
<data>AAAHgAAABDgAAAAJAKAAAA==</data>
|
|
|
|
|
|
|
|
|
|
<!-- 640x360 -->
|
|
|
|
|
<data>AAAFAAAAAWgA</data>
|
|
|
|
|
<data>AAAFAAAAAWgAAAABACAAAA==</data>
|
|
|
|
|
<data>AAAFAAAAAWgAAAAJAKAAAA==</data>
|
|
|
|
|
</array>
|
2018-04-02 13:59:50 -05:00
|
|
|
|
<key>target-default-ppmm</key>
|
2018-06-07 20:12:54 -05:00
|
|
|
|
<real>10.0699301</real>
|
2018-04-02 13:59:50 -05:00
|
|
|
|
</dict>
|
|
|
|
|
</plist>
|
|
|
|
|
HIDPI
|
|
|
|
|
|
|
|
|
|
sed -i '' "s/VID/$VendorID/g" $dpiFile
|
|
|
|
|
sed -i '' "s/PID/$ProductID/g" $dpiFile
|
2018-04-02 15:30:49 -05:00
|
|
|
|
}
|
2018-04-02 13:59:50 -05:00
|
|
|
|
|
2018-04-02 15:30:49 -05:00
|
|
|
|
# 擦屁股
|
|
|
|
|
function end()
|
|
|
|
|
{
|
2018-04-02 13:59:50 -05:00
|
|
|
|
sudo cp -r $thisDir/tmp/* $thatDir/
|
2018-04-02 15:30:49 -05:00
|
|
|
|
sudo rm -rf $thisDir/tmp
|
2018-04-02 13:59:50 -05:00
|
|
|
|
echo "开启成功,重启生效"
|
|
|
|
|
echo "首次重启开机logo会变得巨大,之后就不会了"
|
2018-06-07 20:12:54 -05:00
|
|
|
|
say "妖怪,哪里跑"
|
2018-04-02 15:30:49 -05:00
|
|
|
|
}
|
|
|
|
|
|
2018-06-07 20:12:54 -05:00
|
|
|
|
#自定义分辨率
|
|
|
|
|
#hi = $(printf '%08x %08x' $((1920*2)) $((1080*2)))
|
|
|
|
|
#encode_hi = $(echo $hi | xxd -r -p | base64)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2018-04-02 15:30:49 -05:00
|
|
|
|
# 开
|
|
|
|
|
function enable_hidpi()
|
|
|
|
|
{
|
|
|
|
|
choose_icon
|
|
|
|
|
main
|
|
|
|
|
sed -i "" "/.*IODisplayEDID/d" $dpiFile
|
|
|
|
|
sed -i "" "/.*EDid/d" $dpiFile
|
|
|
|
|
end
|
|
|
|
|
}
|
2018-04-02 13:59:50 -05:00
|
|
|
|
|
2018-04-02 15:30:49 -05:00
|
|
|
|
# 开挂
|
|
|
|
|
function enable_hidpi_with_patch()
|
|
|
|
|
{
|
|
|
|
|
choose_icon
|
|
|
|
|
main
|
|
|
|
|
sed -i '' "s:EDid:${EDid}:g" $dpiFile
|
|
|
|
|
end
|
2018-04-02 13:59:50 -05:00
|
|
|
|
}
|
|
|
|
|
|
2018-04-02 15:30:49 -05:00
|
|
|
|
# 关
|
2018-04-02 13:59:50 -05:00
|
|
|
|
function disable()
|
|
|
|
|
{
|
|
|
|
|
sudo rm -rf $thatDir/DisplayVendorID-$Vid
|
|
|
|
|
sudo rm -rf $thatDir/Icons.plist
|
|
|
|
|
|
|
|
|
|
sudo cp -r $thatDir/backup/* $thatDir/
|
|
|
|
|
|
|
|
|
|
sudo rm -rf $thatDir/backup
|
2018-06-07 20:12:54 -05:00
|
|
|
|
|
2018-04-02 13:59:50 -05:00
|
|
|
|
echo "已关闭,重启生效"
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function start()
|
|
|
|
|
{
|
|
|
|
|
init
|
|
|
|
|
#
|
|
|
|
|
cat << EOF
|
|
|
|
|
|
|
|
|
|
(1) 开启HIDPI
|
|
|
|
|
(2) 开启HIDPI(同时注入花屏补丁)
|
|
|
|
|
(3) 关闭HIDPI
|
|
|
|
|
|
|
|
|
|
EOF
|
2018-06-07 20:12:54 -05:00
|
|
|
|
|
2018-04-02 13:59:50 -05:00
|
|
|
|
read -p "输入你的选择[1~3]: " input
|
|
|
|
|
case $input in
|
|
|
|
|
1) enable_hidpi
|
|
|
|
|
;;
|
|
|
|
|
2) enable_hidpi_with_patch
|
|
|
|
|
;;
|
|
|
|
|
3) disable
|
|
|
|
|
;;
|
2018-06-07 20:12:54 -05:00
|
|
|
|
*)
|
|
|
|
|
|
|
|
|
|
echo "输入错误,拜拜";
|
2018-04-02 13:59:50 -05:00
|
|
|
|
exit 0
|
|
|
|
|
;;
|
|
|
|
|
esac
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
start
|