# GitHeatMap > 桌面贡献热力图小挂件 —— 把 GitHub / Gitea 的提交热力图放到桌面常驻显示。 基于 **Tauri 2 + Rust + 原生前端** 构建的轻量级桌面挂件,仓库内含两个独立变体: | 变体 | 产品名 | 数据来源 | 目录 | |------|--------|----------|------| | GitHub HeatMap | `GitHub HeatMap` | GitHub 贡献日历 | `github/` | | Gitea HeatMap | `Gitea HeatMap` | Gitea `/api/v1/users/{user}/heatmap` | `gitea/` | 两个变体共用一套 Cargo workspace,可分别打包为独立的 `.exe`。 ## 功能特性 - 🟩 **桌面常驻挂件** — 600×108 无边框、透明背景的小窗口,贴在桌面即可一眼看到贡献热力图 - 🖱️ **自由拖拽** — 拖动窗口任意位置,自动记忆坐标(写入 `data/*_config.json`) - 🎨 **明暗主题** — 内置深色 / 浅色主题,托盘或设置面板一键切换 - 🔔 **系统托盘** — 显示 / 隐藏 / 刷新 / 置顶 / 设置 / 退出,左键单击托盘唤出窗口 - ❌ **关闭即隐藏** — 点击关闭按钮隐藏到托盘而非退出,保持常驻 - 🔑 **Token 可选** — 公开数据免认证;私有实例或受限访问时填入 Access Token - ⚡ **原生体积小** — 前端为零依赖原生 HTML/CSS/JS + Canvas 渲染,启动快、占用低 ## 技术栈 | 层级 | 技术 | |------|------| | 桌面框架 | [Tauri 2](https://v2.tauri.app/) | | 后端 | Rust(`reqwest` 请求、`serde` 序列化) | | 前端 | 原生 HTML / CSS / JavaScript(`withGlobalTauri`) | | 热力图渲染 | Canvas 2D | | 配置存储 | exe 同级 `data/` 目录下 JSON | ## 快速开始 ### 环境要求 - [Node.js](https://nodejs.org/) ≥ 18 - [Rust](https://www.rust-lang.org/tools/install) 工具链 -(Windows)[Visual Studio Build Tools](https://visualstudio.microsoft.com/downloads/) ### 开发运行 分别进入对应变体目录: ```bash # GitHub 变体 cd github npm install npm run tauri dev # Gitea 变体 cd gitea npm install npm run tauri dev ``` ### 一键构建(Windows) 仓库根目录提供 `build.bat`,会依次生成图标并打包两个变体: ```bat build.bat ``` 产物位于 `target/release/`: ``` target/release/ ├── github-heatmap.exe └── gitea-heatmap.exe ``` > 也可单独进入 `github/` 或 `gitea/` 执行 `npm run tauri build`。 ### 生成图标 ```powershell powershell -ExecutionPolicy Bypass -File generate-icons.ps1 ``` 脚本会基于内置的 GitHub / Gitea 矢量 Logo 生成各尺寸图标。 ## 配置说明 配置文件保存在 **与 exe 同级** 的 `data/` 目录中: - GitHub 变体:`data/github_config.json` - Gitea 变体:`data/gitea_config.json` 示例(Gitea): ```json { "server": "https://git.shumengya.top", "username": "shumengya", "token": "", "window_x": 558, "window_y": 186, "theme": "dark" } ``` | 字段 | 说明 | |------|------| | `server` | Gitea 服务器地址(GitHub 变体无需此项) | | `username` | 要展示热力图的用户名 | | `token` | Access Token,可选;私有数据或避免限流时填写 | | `window_x` / `window_y` | 窗口位置,拖动后自动记忆 | | `theme` | `dark` / `light` | 也可直接在挂件的**设置面板**或**托盘菜单**中修改,无需手动编辑文件。 ## 项目结构 ```text GitHeatMap/ ├── github/ # GitHub 变体 │ ├── frontend/ # 原生前端(index.html / main.js / style.css) │ └── src-tauri/ # Rust 后端 + Tauri 配置 ├── gitea/ # Gitea 变体(结构同上) ├── generate-icons.ps1 # 图标生成脚本 ├── build.bat # 一键构建两个变体 ├── Cargo.toml # Cargo workspace └── README.md ``` ## 许可证 MIT