Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🌙 SleepLockManager

macOS 原生合盖休眠锁监控与电源管理工具
Monitor and terminate sleep-preventing assertions to eliminate battery drain on macOS.

macOS Swift SwiftUI License: MIT Vibe Coding


📌 项目简介

你是否遇到过这样的情况:Mac 笔记本合上盖子放进背包,几个小时后拿出来不仅发烫,电量还莫名掉光?

这通常是因为某些第三方应用或后台进程持有了系统的 电源断言(Power Assertion / 休眠锁),强制阻碍 Mac 进入真正的睡眠状态。
SleepLockManager 是一款专为 macOS 打造的原生轻量级工具,通过调用底层 IOKit 接口,实时扫描并可视化当前系统的所有休眠锁,支持一键终止阻止休眠的异常进程。


✨ 核心特性

  • 🔍 底层断言扫描:实时监控 PreventUserIdleSystemSleepPreventUserIdleDisplaySleepSystemIsActive 等电源断言。
  • 🏷️ 智能进程分级:自动区分 系统核心进程第三方用户进程,高亮危险的异常锁,防止误杀系统组件。
  • 电源状态感知:实时识别当前处于 电池供电 还是 外接电源 状态,精准定位合盖耗电元凶。
  • 🛑 一键终止进程:支持优雅退出(SIGTERM)与强制结束(SIGKILL),并提供专门的失败诊断与提权指引。
  • 🎨 macOS 原生质感:纯 SwiftUI 构建,支持 macOS 14+ 原生视觉风格,轻量且低资源占用。

🔧 工作原理

[ macOS 系统内核 / IOKit ]
       │
       ▼ (IOPMCopyAssertionsByProcess / pmset)
[ SleepLockManager 监控服务 ]
       │
       ├──► 过滤与解析进程断言 (PreventUserIdleSystemSleep 等)
       ├──► 识别进程类型 (系统白名单 vs 第三方异常进程)
       └──► 结合电源状态 (电池 / AC 电源)
       │
       ▼
[ SwiftUI 原生交互界面 ] ──► [ 一键终止 / 强制释放休眠锁 ]

🚀 快速开始

方式一:Xcode 构建与运行

  1. 安装项目生成工具 XcodeGen
    brew install xcodegen
  2. 生成项目并打开:
    xcodegen generate
    open SleepLockManager.xcodeproj
  3. 在 Xcode 中选择 SleepLockManager Scheme,按 ⌘R 运行。

方式二:一键脚本构建

chmod +x build.sh
./build.sh
open build/SleepLockManager.app

系统要求:macOS 14.0 (Sonoma) 或更高版本,已安装 Xcode Command Line Tools (xcode-select --install)。


💡 使用指南

  1. 查看状态横幅:打开应用,顶部状态栏会直观显示当前系统是否已被“阻止休眠”,以及当前是电池还是电源适配器供电。
  2. 排查进程列表:在列表中查看持有休眠锁的进程名称、PID、断言类型及持续时间。
  3. 结束阻碍进程:点击右侧的 终止 按钮即可释放休眠锁。若遇权限不足,将弹出失败诊断页协助解决。

⚠️ 注意事项与说明

  • 系统必要断言:如正在播放音频(Music/浏览器)、隔空投送传输或系统备份时,系统正常持有断言属于预期行为,请根据实际场景决定是否终止。
  • Root 权限进程:部分由 root 权限运行的守护进程,普通权限可能无法直接杀掉,建议在提示引导下或终端中进行处理。
  • 架构兼容:支持 Apple Silicon (M1/M2/M3/M4) 及 Intel 架构 Mac。

🏗️ 项目结构

SleepLockManager/
├── Models/              # 数据模型 (SleepAssertion, ProcessInfo)
├── Services/            # 核心底层服务 (AssertionMonitor, PowerSourceMonitor)
├── ViewModels/          # @Observable 业务状态管理
└── Views/               # SwiftUI 原生视图
    ├── StatusBannerView.swift   # 电源与休眠状态横幅
    ├── ProcessRowView.swift     # 进程断言列表项
    └── KillFailureSheet.swift   # 终止失败诊断弹窗

☕ 关于本项目 (About)

本项目为 Vibe Coding 产物,旨在解决作者日常 Mac 合盖后放包里发热掉电的个人痛点。

  • 定位:开箱即用、轻量无冗余依赖、专注于单一痛点。
  • 维护说明:个人业余项目,后期大概率按需维护,不承诺长期功能迭代。
  • 二次开发:代码结构干净透明,欢迎自由 Fork、定制与魔改!

📄 License

本项目基于 MIT License 开源。

About

🌙 macOS 合盖休眠锁管理工具 — 识别并终止阻止 Mac 休眠的第三方进程,解决合盖后异常耗电问题

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages