FocuSD
Windows floating island for Codex Status Indicator Light,todos, notes, clipboard history, media control, and Markdown a…
git clone https://github.com/zzliu93-debug/FocuSD.gitzzliu93-debug/FocuSDFocuSD Island
一款 Windows 灵动岛效率工具,把待办、每日笔记、Codex 状态指示灯、剪切板历史和媒体控制放在屏幕顶部。
下载 Release · 反馈 Issue · 查看路线图
目录
关于项目
FocuSD Island 是一个 Windows 优先的桌面效率工具。它以透明、无边框、始终置顶的 Tauri 悬浮岛形式运行,平时停靠在主屏幕顶部,需要时展开为一个紧凑的工作面板。
如果你正在寻找一个适合 Windows 桌面的「灵动岛」工具,FocuSD Island 的目标不是做一个装饰组件,而是把每天最常用、最容易打断注意力的入口收进一个小岛里:今日待办、每日笔记、AI 编程状态、剪切板历史、媒体控制和外观设置。它也适合正在搜索 windows灵动岛、灵动岛 或 Windows Dynamic Island 替代方案的用户。
项目当前处于早期 MVP 阶段,优先适配 Windows。欢迎通过 Issue 和 PR 一起完善它。
核心功能
| 功能 | 说明 |
|---|---|
| Windows 灵动岛 | 透明、无边框、始终置顶,支持折叠、展开、边缘收起和托盘隐藏。 |
| 今日待办 | 新增、编辑、完成、删除任务,并可设置当前专注任务。 |
| 任务延续 | 可在设置中开启“自动将未完成任务写入下一天”。 |
| 拖动排序 | 可在设置中开启任务拖动排序,通过任务右侧把手调整顺序。 |
| 每日笔记 | 记录当天补充信息,与待办一起形成每日工作记录。 |
| 自动归档 | 跨天后自动归档上一天的待办和笔记。 |
| Markdown 保存 | 将当天内容保存为 YYYY-MM-DD.md,方便接入本地笔记流。 |
| Codex 状态指示灯 | 通过 Codex hooks 显示 AI 编程任务正在运行、已完成或需要查看。 |
| 剪切板历史 | 记录文本和图片剪切板内容,支持备注、搜索、收藏、复制、删除和清空。 |
| 媒体控制 | 查看系统音频状态,控制播放/暂停、上一首、下一首。 |
| 外观设置 | 调整透明度、缩放、顶部间距、主题色,并保存样式预设。 |
| 系统集成 | 支持系统托盘菜单和 Windows 当前用户开机自启动。 |
Codex 状态指示灯
FocuSD Island 内置 Codex 状态指示灯,适合把 AI 编程任务的运行状态放在桌面最显眼的位置。
你可以在设置中一键安装或修复 Codex hooks。Codex 正在处理任务时,悬浮岛会显示运行状态;任务空闲或完成后回到完成状态;如果任务失败,或者运行标记超过 10 分钟没有收到结束事件,悬浮岛会提醒你回来查看。
Important
Codex 状态灯不亮时,必须在 Codex 中信任 FocuSD hook。 新版 Codex 会跳过未经审核和信任的命令 hook;仅在 FocuSD 中点击“安装/修复”还不够。
Codex hook 信任步骤
- 在 FocuSD Island 中打开 设置 → AI Agent 状态灯,点击 安装/修复。
- 重启 Codex,或新开一个 Codex 任务。
- 在 Codex 中打开 设置 → Hooks;使用 CLI 时输入
/hooks。 - 找到名称为 Updating FocuSD agent status 的两条 hook,确认脚本路径位于
%APPDATA%\com.focusd.island\。 - 点击 审核并信任 / Trust,然后发送一条新任务测试状态灯。
如果 hook 已被信任但状态灯仍无效,请回到 FocuSD 再次点击 安装/修复,然后重启 Codex 后重试。
这个功能的目标很简单:不用反复切回终端或编辑器,也能知道 Codex 现在是在工作、已经完成,还是需要你接手。
技术栈
- Tauri 2:桌面应用外壳与原生能力
- React 19:前端界面
- Vite 7:前端开发与构建
- TypeScript:类型约束
- Rust:窗口定位、托盘、文件写入、媒体控制和 Windows API 集成
- lucide-react:界面图标
快速开始
FocuSD Island 支持两种使用方式:直接下载 Release,或者通过源码自行构建。
方式一:通过 Release 安装
适合只想直接使用应用的用户。
- 打开本仓库的 GitHub Releases 页面。
- 下载最新版本的 Windows 安装包。
- 推荐优先下载
FocuSD Island_版本号_x64-setup.exe。 - 双击安装包,按提示完成安装。
- 首次启动后,可在设置中配置 Markdown 保存目录、开机自启动、Codex 状态指示灯、剪切板历史和样式预设。
如果 Release 页面暂时没有安装包,可以使用下面的源码构建方式。
方式二:通过源码构建
适合想参与开发、自己构建可执行文件,或暂时没有可用 Release 包的用户。
环境要求
- Windows 10 / Windows 11
- Node.js
- pnpm
- Rust / Cargo
- Microsoft Visual Studio Build Tools,并安装 C++ 工作负载
- Microsoft Edge WebView2 Runtime
构建步骤
git clone https://github.com/zzliu93-debug/lsland-1.git cd lsland-1 pnpm install pnpm tauri build
构建完成后,安装包通常位于:
src-tauri/target/release/bundle/nsis/FocuSD Island_0.1.6_x64-setup.exe
src-tauri/target/release/bundle/msi/FocuSD Island_0.1.6_x64_en-US.msi
原始可执行文件通常位于:
src-tauri/target/release/focusd-island.exe
如果只想生成 release 可执行文件、不生成安装包,可以运行:
pnpm tauri build --no-bundle
开发模式:
pnpm tauri dev
只启动前端开发服务器:
pnpm dev
常用命令
| 命令 | 说明 |
|---|---|
pnpm install |
安装前端和 Tauri CLI 依赖 |
pnpm dev |
启动 Vite 前端开发服务器 |
pnpm build |
TypeScript 检查并构建前端 |
pnpm preview |
预览前端构建产物 |
pnpm tauri dev |
启动 Tauri 桌面开发模式 |
pnpm tauri build |
构建 Tauri 桌面应用和安装包 |
pnpm tauri build --no-bundle |
仅生成 release 可执行文件 |
使用说明
待办与每日笔记
- 在展开面板中添加今日待办,并将最重要的一条设为当前专注任务。
- 每日笔记适合记录当天补充信息、临时想法或任务背景。
- 跨天后,上一天内容会进入归档,方便回顾。
- 如需本地保存,可在设置中选择 Markdown 保存目录。
默认 Todo 保存路径为:
%USERPROFILE%\Documents\FocuSD
剪切板
- 开启剪切板历史后,应用会记录文本和图片剪切板内容。
- 每条记录都可以添加备注,并通过内容或备注搜索。
- 每条记录支持收藏、复制、删除。
- 收藏内容会保留在收藏栏目中,适合保存高频片段。
Codex 状态
- 在设置中安装或修复 Codex hooks。
- 状态文件位于
%APPDATA%\com.focusd.island\agent-status.json。 - 指示灯会根据 Codex 运行、完成、失败或超时状态变化。
数据与存储
- 待办、每日笔记、归档、外观设置等前端状态默认保存在
localStorage。 - 配置保存目录后,今日内容可写入本地 Markdown 文件,文件名为
YYYY-MM-DD.md。 - 剪切板历史、Codex 状态等原生侧数据保存在应用数据目录。
- 开机自启动使用 Windows 当前用户注册表路径:
HKCU\Software\Microsoft\Windows\CurrentVersion\Run。
项目结构
.
├── src/ # React 前端
│ ├── App.tsx # 核心 UI、状态和 Tauri invoke 调用
│ ├── App.css # 主要样式
│ └── main.tsx # React 入口
├── src-tauri/ # Tauri / Rust 桌面端
│ ├── src/lib.rs # 原生命令、窗口定位、托盘、媒体和文件保存
│ ├── src/clipboard_history.rs
│ ├── src/main.rs # Tauri 应用入口
│ ├── capabilities/ # Tauri 权限能力配置
│ └── tauri.conf.json # Tauri 配置
├── scripts/ # Codex 状态 hook 脚本
├── docs/ # 补充文档
├── package.json
└── README.md
路线图
- 开发并适配 macOS 版本
- 完善安装包发布流程和自动更新能力
- 增强多显示器定位策略
- 增加更完整的快捷键与键盘工作流
- 扩展任务分类、标签和筛选能力
- 增加数据导入、导出和同步方案
- 优化剪切板历史、媒体控制和 Codex 状态指示灯体验
如果你有更适合 Windows 灵动岛、桌面效率工具或 AI 编程工作流的想法,欢迎在 Issue 中讨论。
参与贡献
欢迎提交 Issue 和 Pull Request。
- Fork 本仓库。
- 创建你的功能分支:
git checkout -b feature/amazing-feature。 - 提交改动:
git commit -m "Add amazing feature"。 - 推送分支:
git push origin feature/amazing-feature。 - 发起 Pull Request。
提交 Issue 时,建议说明:
- 系统版本
- 应用版本
- 复现步骤
- 预期行为
- 实际行为
- 截图或录屏
提交 PR 时,建议保持改动范围清晰,并在说明中写明验证过的命令。
许可证
当前仓库暂未声明开源许可证。如需公开分发或协作复用,建议补充 LICENSE 文件。
致谢
- README 结构参考 Best-README-Template
- 感谢所有通过 Issue、PR 和反馈帮助改进 FocuSD Island 的用户
more like this
TachiSnap
TachiSnap — Pixel Snapper for animation pixel artists. Rust + WebAssembly client-side tool for cleaning up AI-generated…
bit_gossip
Pathfinding library for calculating all node pairs' shortest paths in an unweighted undirected graph.