../

macOS 默认通知铃声修改教程

前情提要

macOS 默认的铃声在设置中是无法改变的,但这个默认铃声会被所有的 app 作为通知铃声使用,而且99.99%的 app 都没有设置项来修改这个。

本文将提供一种 破坏性的 办法,来实现替换默认铃声。

准备

  1. 准备好你想要的铃声,可以去 https://samplefocus.com/ 这里找。
  2. 把铃声转换为先转为 .aiff 文件,再转为 .caf 文件,使用
    # wav 转换到 aiff
    ffmpeg -i <path-to-wav>.wav -map 0:0 -c:a wmav2 -ab 1411k -ac 2 -vn -f asf -sn -y <path-to-aiff>.aiff
    # aiff 转换到 caf
    afconvert <path-to-aiff>.aiff <path-to-caf>.caf -d ima4 -f caff -v
  3. 重启到恢复模式(m系列芯片关机后长按开机键直到进入选择界面)
  4. 关闭 SIP
    csrutil disable
    csrutil authenticated-root disable

替换

  1. 重启到正常启动
  2. 挂载根目录
    mkdir ~/livemount
    sudo mount -o nobrowse -t apfs "$(mount | head -n1 | awk '{print $1}' | sed 's/..$//g')" ~/livemount
  3. 导航到目标
    	cd ~/livemount/System/Library/PrivateFrameworks/ToneLibrary.framework/Versions/A/Resources/AlertTones/EncoreInfinitum
  4. 将原文件改名备份
    sudo mv Rebound-EncoreInfinitum.caf Rebound-EncoreInfinitum.caf.bak
  5. 把准备的铃声拷入
    sudo cp <path-to-caf>.caf Rebound-EncoreInfinitum.caf
  6. 给系统创建新快照
    # m系列芯片适用
    sudo bless --mount ~/"livemount/System/Library/CoreServices/" --setBoot --create-snapshot
    # intel芯片适用(也有可能不适用,也有可能和m系列芯片用的是相同的,你都试试吧)
    sudo bless --folder ~/"livemount/System/Library/CoreServices/" --setBoot --create-snapshot

收尾

  1. 重启到恢复模式
  2. 恢复 SIP (想不到吧,改完文件并不影响sip,sip也不会使我们改的文件失效)
    csrutil authenticated-root enable
    csrutil enable