Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

AutoLocker

一个 macOS 应用,当你离开电脑时自动锁定屏幕。

工作原理

应用会读取系统已配对的经典蓝牙设备列表,你可以从列表中选择一个"目标设备"(例如你的手机 / AirPods / Apple Watch)。当该设备:

  • 蓝牙连接断开
  • 并持续超过"断开后延迟锁屏"(默认 10 秒)后

会自动触发锁屏。

在目标设备保持连接期间,应用会向 macOS 申请 IOPMAssertion,阻止系统进入空闲休眠(防止你看剧或阅读时自动锁屏)。

锁屏优先调用私有框架 login.framework/SACLockScreenImmediate,失败时依次回退到 CGSession -suspendpmset 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 build

目录结构

AutoLocker/
├── 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

注意事项

  1. 配对要求:由于 CoreBluetooth 屏蔽了绝大多数真实 MAC 地址且 Android 设备不常发射 BLE 广播,本项目已改用 IOBluetooth 经典蓝牙连接状态作为判定依据。必须先在系统偏好设置中完成配对。
  2. 重连机制:设备断开后,程序会在后台队列持续静默尝试重新建立连接,设备回到范围内会自动恢复。
  3. 如果用命令行编译后直接运行,可能需要手动允许蓝牙权限。

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages