使用 Hammerspoon 自动管理并挂载移动到外部硬盘的 PlayCover 游戏目录,解决 macOS 启动和设备插入后默认挂载路径不正确的问题。
- 自动检测:Hammerspoon 启动后或插入指定设备时自动执行挂载检查。
- 智能重挂载:若目标卷已挂载但路径不正确,先卸载再挂载至用户配置的正确目录。
- 支持隐藏:可配置
nobrowse
选项,避免卷出现在 Finder 侧边栏。 - 无感操作:可通过 sudoers 设置,实现无密码、静默执行挂载与卸载。
- 已安装并配置 Hammerspoon。
- PlayCover 游戏已移至外置硬盘,参考讨论: PlayCover/PlayCover#1712
- 外置卷格式为 APFS。
- 已知目标卷的 Partition UUID 及期望挂载路径。
-
克隆或下载本仓库:
git clone https://github.com/Jiang-lai/auto-mount-Playcover.git
-
将
init.lua
中的脚本内容追加到你本地的~/.hammerspoon/init.lua
:-- 在 init.lua 合适位置粘贴脚本
-
打开脚本中的示例映射表,将其中的卷 UUID 与挂载路径替换为你的实际值:
local volumeMappings = { { uuid = "<你的分区 UUID>", mountPoint = "/用户/你的路径" }, -- … }
-
(可选)启用 USB 插入时重新挂载逻辑:
-- 取消注释以下行: -- hs.usb.watcher.new(...):start()
-
配置 sudoers,允许无密码执行挂载命令:
sudo visudo -f /etc/sudoers.d/hammerspoon
在打开的文件中添加:
<你的用户名> ALL=(root) NOPASSWD: /sbin/mount_apfs <你的用户名> ALL=(root) NOPASSWD: /usr/sbin/diskutil
-
保存并退出,确保没有语法错误。
-
保存并重载 Hammerspoon 配置:
-- 在 Hammerspoon 控制台执行: hs.reload()
-
观察弹出通知或 Hammerspoon 控制台日志,确认以下操作:
- 目标设备插入后检测到指定分区 UUID。
- 如果未挂载或挂载路径不正确,自动卸载并重新挂载。
- 脚本运行完成后,会弹出提示
挂载监听器已启动
。
-
为什么我的卷 UUID 在列表里找不到?
- 请执行
diskutil list -plist
并确认PartitionUUID
。
- 请执行
-
脚本找不到 ``?
- 请确认
which mount_apfs
输出/sbin/mount_apfs
。
- 请确认
-
挂载后仍在 Finder 侧边栏可见?
- 如果启用了
nobrowse
,请重启 Finder 或取消该选项。
- 如果启用了