Atoll
Atoll 将 MacBook 的刘海区域转变为一个专注于媒体控制、系统洞察和快速实用程序的交互界面。它在不需要时保持低调,在需要时则能响应式扩展,为用户提供流畅、智能的交互体验。
功能特性
- 媒体控制中心:直接在刘海区域显示和控制当前播放的媒体(音乐、播客等),提供播放/暂停、下一首/上一首、进度条和音量调节等核心功能。
- 系统状态洞察:实时显示关键系统信息,如 CPU 使用率、内存占用、网络状态或电池电量,一目了然。
- 快速实用程序:提供便捷的工具入口,例如快速便签、计时器或快捷指令启动器。
- 智能响应与扩展:界面在闲置时保持简洁,仅在交互时(如鼠标悬停或收到通知)优雅地展开,不干扰主屏幕内容。
- 美观与原生集成:严格遵循 macOS 人机界面指南,提供与原系统无缝融合的视觉体验和流畅动画。
安装指南
系统要求
- macOS Sonoma 14.0 或更高版本
- Xcode 15.0+ 及 Swift 5.9 工具链
- 配备刘海屏的 MacBook(用于完整功能测试)
安装步骤
方法一:下载发行版
- 访问项目的 Release 页面。
- 下载最新版本的
Atoll.dmg文件。 - 打开
.dmg文件并将Atoll.app拖拽到“应用程序”文件夹中。 - 首次运行时,请在系统提示时授予必要的辅助功能权限。
方法二:从源代码构建
- 克隆仓库:
git clone https://github.com/Ebullioscopic/Atoll.git cd Atoll - 打开项目:
open DynamicIsland.xcodeproj - 在 Xcode 中,选择您的 Mac 作为运行目标。
- 点击
Cmd + R进行构建和运行。 - 根据提示授予所需的权限。
使用说明
Atoll 在安装并授权后会常驻菜单栏。点击菜单栏图标可以访问设置或退出应用。
基础使用:
- 媒体控制:当有媒体播放时,刘海区域会自动显示专辑封面、歌曲信息和基本控制按钮。
- 查看系统状态:鼠标悬停或轻触刘海区域,即可查看当前的系统性能指标。
- 使用快速工具:通过配置好的快捷键或菜单栏入口,快速呼出预设的实用工具。
配置与自定义:
大部分功能可以通过 Atoll.app 内的偏好设置进行配置,包括:
- 选择在刘海区域显示哪些系统信息。
- 自定义媒体控制的显示样式。
- 设置快速工具的触发方式。
核心代码
项目主要包含用于与 macOS 媒体播放框架交互和构建刘海交互界面的 Swift 代码。以下是项目中一个关键组件的概览示例(基于提供的 Perl 适配器脚本推断的核心功能):
#!/usr/bin/perl
# 媒体远程适配器
# 该脚本作为与 macOS 私有 MediaRemote 框架交互的桥梁。
# 核心功能:获取和控制当前播放的媒体信息。use strict;
use warnings;sub get_now_playing_info {# 调用底层框架,获取当前播放媒体的元数据(如歌曲名、艺术家、专辑、进度等)。# 返回格式化的数据,供 Atoll 界面显示。my $info = _fetch_from_framework();return $format_json($info);
}sub send_media_command {my ($command_id) = @_;# 将用户操作(如播放、暂停、切歌)转换为系统媒体命令并发送。# 命令 ID 对应 MRCommand 常量(例如 kMRPlay = 0)。_send_command_to_framework($command_id);
}
// 刘海视图控制器 (Swift 伪代码示例)
// 负责管理刘海区域的视觉呈现和交互逻辑。import AppKitclass AtollViewController: NSViewController {// 媒体信息显示标签@IBOutlet weak var songTitleLabel: NSTextField!@IBOutlet weak var artistLabel: NSTextField!// 系统监控显示var cpuUsageView: SystemMeterView!var memoryUsageView: SystemMeterView!override func viewDidLoad() {super.viewDidLoad()setupMediaObserver() // 监听媒体播放状态变化setupSystemMonitor() // 启动系统监控configureAppearance() // 配置视图外观以适应刘海区域}func updateMediaUI(with metadata: NowPlayingMetadata) {// 在主线程更新界面元素DispatchQueue.main.async {self.songTitleLabel.stringValue = metadata.titleself.artistLabel.stringValue = metadata.artist// ... 更新进度条、封面等}}
}
注意:以上代码为基于项目描述和文件结构推断的核心逻辑示例。实际的实现代码位于项目的 Swift 源文件中,包含了完整的界面布局、动画效果和与系统 API 的深度集成。
更多精彩内容 请关注我的个人公众号 公众号(办公AI智能小助手)
对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号(网络安全技术点滴分享)
公众号二维码

公众号二维码
