一个 macOS 应用,当你离开电脑时自动锁定屏幕。
应用会读取系统已配对的经典蓝牙设备列表,你可以从列表中选择一个"目标设备"(例如你的手机 / AirPods / Apple Watch)。当该设备:
- 蓝牙连接断开
- 并持续超过"断开后延迟锁屏"(默认 10 秒)后
会自动触发锁屏。
在目标设备保持连接期间,应用会向 macOS 申请 IOPMAssertion,阻止系统进入空闲休眠(防止你看剧或阅读时自动锁屏)。
锁屏优先调用私有框架
login.framework/SACLockScreenImmediate,失败时依次回退到CGSession -suspend和pmset displaysleepnow。
- 顶部总开关:开启 / 关闭自动锁屏
- 帮助说明:点击顶部
?按钮呼出使用说明 - 目标状态面板:目标状态指示器、已绑定目标名称、离开延迟秒数滑块
- 已配对的蓝牙设备列表:实时显示已配对设备的连接状态,提供真实/派生 MAC 地址展示及复制功能,并支持一键绑定目标
- macOS 13.0 及以上
- Xcode 15 及以上(Swift 5.9+)
- 首次启动需要授予蓝牙权限
- 需要你的目标设备(如小米手机)提前在 macOS 中完成常规的蓝牙配对
cd AutoLocker
open AutoLocker.xcodeproj然后在 Xcode 中点击 Run,或使用命令行:
xcodebuild -project AutoLocker.xcodeproj -scheme AutoLocker -configuration Debug buildAutoLocker/
├── AutoLocker.xcodeproj/ # Xcode 工程
└── AutoLocker/
├── AutoLockerApp.swift # App 入口
├── AppState.swift # 全局状态管理
├── ContentView.swift # SwiftUI 主界面
├── HelpView.swift # 使用说明界面
├── BluetoothManager.swift # IOBluetooth 与 CoreBluetooth 管理
├── DeviceNameResolver.swift # 蓝牙厂商 Company ID 解析
├── MacAddressResolver.swift # 蓝牙 MAC 地址解析(真实/广播/派生)
├── LockController.swift # 离开检测、防休眠锁 + 自动锁屏调度
├── LockScreenHelper.swift # 锁屏调用封装
├── Info.plist # 蓝牙权限描述
└── AutoLocker.entitlements # Bluetooth entitlement
- 配对要求:由于 CoreBluetooth 屏蔽了绝大多数真实 MAC 地址且 Android 设备不常发射 BLE 广播,本项目已改用
IOBluetooth经典蓝牙连接状态作为判定依据。必须先在系统偏好设置中完成配对。 - 重连机制:设备断开后,程序会在后台队列持续静默尝试重新建立连接,设备回到范围内会自动恢复。
- 如果用命令行编译后直接运行,可能需要手动允许蓝牙权限。