Skip to content

About

Windows desktop card that converts international gold prices to CNY per gram

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

Gold Show for Windows

把国际金价换算成人民币克价的 Windows 桌面卡片,使用 Tauri 2、React 和 TypeScript 构建。

人民币克价 = XAU/USD × USD/CNY ÷ 31.1034768

显示的是现货参考价,不是银行买卖价、黄金回收价或首饰零售价。

使用体验

  • 360px 无边框透明卡片,自动跟随 Windows 明暗主题
  • 卡片附着在 Windows 桌面层,按 Win+D 显示桌面时仍然可见
  • 系统托盘常驻;左键托盘图标显示或隐藏卡片
  • 拖动卡片标题区域调整位置,重启后自动恢复
  • 右键卡片或托盘:显示 / 隐藏、立即刷新、开机启动、检查更新、退出
  • 每 5 分钟刷新;点击右上角状态可立即刷新
  • 近半年周线走势图、涨跌额和涨跌幅,涨红跌绿
  • 主报价源失败时自动切换备用源
  • 断网后依次降级为缓存、过期和暂不可用状态
  • 单实例运行,重复启动会唤醒已有卡片

桌面层挂载在应用启动时执行一次。如果手动重启了 Windows Explorer,重启 Gold Show 即可重新挂载。

自动更新

应用启动 8 秒后静默检查一次更新,此后每 6 小时检查一次,也可以从托盘手动「检查更新」。 发现新版本时卡片底部浮出一条提示,下载和安装都需要点击确认,安装完成后点「重启」生效。

更新源是 GitHub Release 里的 latest.json,在 src-tauri/tauri.conf.json 的 plugins.updater.endpoints 中配置。

数据来源

用途 接口
金价主源 https://api.gold-api.com/price/XAU
金价备源 https://www.vang.today/api/prices?type=XAUUSD
美元人民币汇率 https://api.frankfurter.dev/v2/rate/USD/CNY
历史金价主源 新浪 GlobalFuturesService.getGlobalFuturesDailyKLine?symbol=GC
历史金价备源 东方财富 push2his.eastmoney.com/api/qt/stock/kline/get(klt=102 周 K)
历史汇率 https://api.frankfurter.dev/v1/{start}..{end}

备用源使用 buy 字段,因此界面会明确标注为“vang.today 买入参考”,不把两种口径伪装成完全一致的报价。

成功报价和近半年的周线保存在 Tauri 应用数据目录下的 gold-show.json。缓存超过 24 小时后会标记为过期。

走势图

卡片上的克价是每 5 分钟拉一次的即时价,走势图走的是另一条路,两者互不影响。

走势图只画近半年 26 个周点,本地滚动保存:数据齐全时每 12 小时回源刷新一次本周收盘, 窗口内还缺周时每小时补一次,超出半年的周随时间自然被裁掉。因此关机多久都不会让曲线断档, 开机补齐即可,也不需要这台电脑一直开着攒数据。

两个历史金价源给的都是 COMEX 黄金期货,与现货有约 1~2% 的基差。画图前整条历史会按最新一周 缩放到现货口径,曲线末端因此与卡片上的即时价完全一致;缩放系数在首末两点上约掉,所以涨跌幅 不受影响。缩放系数明显异常时不缩放,宁可少对齐一次也不画出错位的曲线。

主源返回的是 JSONP 包裹的日 K,parseJsonBody 会先剥壳再解析,日线按自然周折成周收盘。 两个源都在国内可直连,不依赖跨境网络。

历史源全部失败且本地没有周线时,走势图位置显示“正在获取走势数据”,即时价照常显示。

开发环境

  • Windows 10/11
  • Node.js 20+ 或 22+
  • Rust stable(MSVC 工具链)
  • Visual Studio C++ Build Tools,勾选“使用 C++ 的桌面开发”
  • Microsoft Edge WebView2 Runtime

安装依赖并启动:

npm install
npm run tauri dev

运行验证:

npm test
npm run build
cargo fmt --manifest-path src-tauri/Cargo.toml -- --check
cargo check --manifest-path src-tauri/Cargo.toml

打包与分发

本地构建带更新签名的安装包:

./build.ps1

脚本会从 ~/.tauri/gold-show.key 读取更新私钥,产物在 src-tauri/target/release/bundle/nsis/。 NSIS 安装程序按当前用户安装,不需要管理员权限,把 *-setup.exe 发给别人即可。

首次在新机器上准备签名密钥:

npx tauri signer generate -w "$HOME\.tauri\gold-show.key"

生成的公钥要写回 tauri.conf.json 的 plugins.updater.pubkey;私钥请妥善保管,丢失后已发布的旧版本将无法再收到更新。

发布

ci.yml 在 Windows 上运行测试、前端构建、Rust 格式检查和 cargo check。

发版前需要在仓库 Secrets 中配置:

Secret 内容
TAURI_SIGNING_PRIVATE_KEY ~/.tauri/gold-show.key 的完整文本
TAURI_SIGNING_PRIVATE_KEY_PASSWORD 生成密钥时设置的密码,没有则留空

然后同步 package.json、src-tauri/Cargo.toml、src-tauri/tauri.conf.json 三处版本号并打标签:

git tag v0.3.0
git push origin v0.3.0

release.yml 会校验标签与版本号一致,构建签名安装包,并把 latest.json 一起上传到 GitHub Release,老版本随后即可自动升级。

目录结构

src/
├─ components/       卡片内容、SVG 走势图与更新提示
├─ hooks/            报价刷新与更新检查
├─ quote/            数据契约、计算、主备源、周线回填与缓存
├─ styles/           卡片样式
└─ platform.ts       首次窗口定位

src-tauri/
├─ capabilities/     最小权限和报价域名白名单
└─ src/               WorkerW 桌面挂载、托盘、菜单、单实例与开机启动

许可

MIT

About

Windows desktop card that converts international gold prices to CNY per gram

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages