Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

SSDWGG/oneMenu

Repository files navigation

oneMenu

English

一款 macOS 菜单栏工具,一站式管理 Codex/GPT、Claude Code 的运行监控、硬件状态、天气预报、倒计时等。


功能概览

  • AI 活跃检测:独立状态灯展示 GPT/Codex 和 Claude 是否正在处理任务,图标样式互不混淆。
  • 会话悬浮窗:鼠标悬浮时展示各 AI 的活跃/闲置会话数量及标题。
  • 结束通知:AI 会话从活跃变为闲置时弹出桌面通知。
  • 全部结束邮件:所有 AI 会话都空闲时自动发送一封邮件通知。
  • 保持 Mac 活跃:一键开启防休眠,阻止系统和显示器因空闲进入睡眠。
  • 天气预报:使用 macOS 定位获取当前位置,通过 Open-Meteo 拉取当前天气、未来 8 小时和 7 天预报。
  • 硬件状态:CPU 使用率、内存、电池、电源来源、热状态,以及 SMC 温度传感器、风扇转速和 GPU 信息;状态栏可选展示 CPU、内存、电池等指标。
  • 倒计时:按秒或分钟设置倒计时,状态栏实时显示剩余时间,可暂停/继续/重置。
  • 目标时间倒计:设置每日目标时间(如下班时间),状态栏显示剩余分钟;过点后可显示 0 或滚动到明天。
  • 系统提醒:指定时间触发 macOS 系统通知,支持单次提醒或每日重复。
  • 外观模式:浅色、深色和跟随 macOS 系统亮暗色。
  • 设置窗口:iStat Menus 风格,左侧功能分组,右侧二级配置页。
  • 本地优先:只解析本机文件的状态和会话标题,不传输会话内容。

检测来源

oneMenu 只读取本机文件,不依赖远程账号:

  • GPT/Codex:读取 ~/.codex/sessionstask_started / task_complete 事件,以及 ~/.codex/session_index.jsonl 获取会话标题。
  • Claude Code:读取 ~/.claude/projects 的 JSONL 事件;最近一次循环未出现 assistant:end_turn 时视为运行中。
  • 天气:首次启用时请求 macOS 定位权限,只把经纬度发送给 Open-Meteo API。
  • 硬件:通过 macOS IOKit 和 SMC 读取传感器数据(部分 Apple Silicon / 无风扇机型不暴露温度传感器和风扇转速)。

本地运行

swift run oneMenu

要求 macOS 13+。

打包成 App

swift build --configuration release
mkdir -p oneMenu.app/Contents/MacOS oneMenu.app/Contents/Resources
cp .build/release/oneMenu oneMenu.app/Contents/MacOS/
cp Resources/Info.plist oneMenu.app/Contents/Resources/
cp Resources/AppIcon.icns oneMenu.app/Contents/Resources/
cp Sources/oneMenu/Resources/*.svg oneMenu.app/Contents/Resources/
open oneMenu.app

默认使用 ad-hoc 签名,适合本机使用。

若需 Developer ID 签名:

Scripts/build-app.sh
SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" Scripts/build-app.sh

打包 DMG

Scripts/build-dmg.sh

生成文件:

  • dist/oneMenu-0.2.3.dmg
  • dist/oneMenu-0.2.3.dmg.sha256

公开分发建议使用 Developer ID 签名并公证:

SIGN_IDENTITY="Developer ID Application: Your Name (TEAMID)" \
NOTARY_PROFILE="your-notarytool-profile" \
Scripts/build-dmg.sh

邮件通知配置

邮件默认关闭;创建 ~/.onemenu/email.json 后启用。当所有 AI 会话从活跃变为空闲时发送一封邮件。

mkdir -p ~/.onemenu && chmod 700 ~/.onemenu

推荐将 SMTP 授权码存入 Keychain:

security add-generic-password \
 -U \
 -s onemenu-email \
 -a sender@example.com \
 -w 'your-smtp-app-password'

~/.onemenu/email.json 示例:

{
 "smtpURL": "smtps://smtp.example.com:465",
 "username": "sender@example.com",
 "passwordCommand": "security find-generic-password -s onemenu-email -a sender@example.com -w",
 "from": "sender@example.com",
 "to": ["you@example.com"],
 "subject": "oneMenu: All AI tasks completed",
 "requiresTLS": true
}

环境变量:

  • ONEMENU_EMAIL_CONFIG:自定义配置文件路径
  • ONEMENU_EMAIL_PASSWORD:SMTP 密码
  • ONEMENU_EMAIL_PASSWORD_COMMAND:获取密码的命令

菜单栏交互

  • 单击:显示对应模块的信息悬浮窗
  • 双击/双指点按:打开对应模块的设置页
  • 右键单击:显示完整菜单(设置、刷新、防休眠、退出等)
  • 悬浮:展示 AI 会话详情、硬件详情

各模块可独立配置是否在状态栏显示。

落地页

拟态玻璃风格,支持鼠标跟随滚动交互。

三端预览地址

端点 地址
GitHub Pages ssdwgg.github.io/oneMenu
VPS 域名 A (HTTPS) onemenu.ssdwgg.site
VPS 域名 B onemenu.aiwgg.cn

Pages

本地预览:

python3 -m http.server 4173 --directory docs
open http://127.0.0.1:4173/

部署

cp .env.deploy.example .env.deploy.local

编辑 .env.deploy.local 填写服务器信息:

DEPLOY_SSH_HOST=your-server-ip
DEPLOY_SSH_USER=root
DEPLOY_SSH_PORT=22
DEPLOY_SSH_KEY=~/.ssh/your-key.pem
DEPLOY_REMOTE_DIR=/www/wwwroot/your-project/onemenu/

同步到服务器:

set -a && source .env.deploy.local && set +a
ssh -i "$DEPLOY_SSH_KEY" -p "$DEPLOY_SSH_PORT" \
 -o StrictHostKeyChecking=accept-new -o IdentitiesOnly=yes \
 "$DEPLOY_SSH_USER@$DEPLOY_SSH_HOST" "mkdir -p '$DEPLOY_REMOTE_DIR'"
rsync -avz --chmod=Du=rwx,Dgo=rx,Fu=rw,Fgo=r \
 -e "ssh -i '$DEPLOY_SSH_KEY' -p '$DEPLOY_SSH_PORT' -o StrictHostKeyChecking=accept-new -o IdentitiesOnly=yes" \
 docs/ "$DEPLOY_SSH_USER@$DEPLOY_SSH_HOST:$DEPLOY_REMOTE_DIR"

验证

运行测试:

swift test

校验 DMG:

Scripts/build-dmg.sh
cd dist
shasum -a 256 -c oneMenu-0.2.3.dmg.sha256

项目结构

.
├── Package.swift
├── Resources/
│ ├── AppIcon.icns
│ ├── AppIcon.png
│ ├── Info.plist
│ └── InstallGuide.html
├── Scripts/
│ ├── build-app.sh
│ ├── build-dmg.sh
│ └── generate-icon.py
├── Sources/
│ ├── oneMenu/
│ │ ├── AiStatusApp.swift
│ │ ├── AppAppearancePreferences.swift
│ │ ├── EmailConfigWindowController.swift
│ │ ├── HardwareStatusMonitor.swift
│ │ ├── SettingsWindowController.swift
│ │ ├── WeatherForecastService.swift
│ │ └── Resources/
│ └── CodexStatusCore/
├── Tests/
│ └── CodexStatusCoreTests/
└── docs/
 ├── assets/
 ├── downloads/
 ├── index.html
 ├── script.js
 └── styles.css

About

macOS 菜单栏状态灯,用来观察本机 GPT/Codex 和 Claude Code 是否正在处理任务。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

Contributors

AltStyle によって変換されたページ (->オリジナル) /