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
后端 Rustreqwest 请求、serde 序列化)
前端 原生 HTML / CSS / JavaScriptwithGlobalTauri
热力图渲染 Canvas 2D
配置存储 exe 同级 data/ 目录下 JSON

快速开始

环境要求

开发运行

分别进入对应变体目录:

# GitHub 变体
cd github
npm install
npm run tauri dev

# Gitea 变体
cd gitea
npm install
npm run tauri dev

一键构建Windows

仓库根目录提供 build.bat,会依次生成图标并打包两个变体:

build.bat

产物位于 target/release/

target/release/
├── github-heatmap.exe
└── gitea-heatmap.exe

也可单独进入 github/gitea/ 执行 npm run tauri build

生成图标

powershell -ExecutionPolicy Bypass -File generate-icons.ps1

脚本会基于内置的 GitHub / Gitea 矢量 Logo 生成各尺寸图标。

配置说明

配置文件保存在 与 exe 同级data/ 目录中:

  • GitHub 变体:data/github_config.json
  • Gitea 变体:data/gitea_config.json

示例Gitea

{
  "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

也可直接在挂件的设置面板托盘菜单中修改,无需手动编辑文件。

项目结构

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

Description
No description provided
Readme MIT 190 KiB
Languages
JavaScript 34.3%
CSS 20.3%
Rust 16.4%
HTML 13.6%
PowerShell 13.3%
Other 2.1%