feat: ClockLab —— 可调速桌面时钟(数字/表盘,支持倍率、暂停、倒转、快进)

一个用于演练/演示的桌面时钟工具:两个窗口 —— 控制窗口(普通)与时钟窗口(无边框、
可拖动、可拖边缘改大小,由控制窗口开与关)。

功能
- 两个窗口各自的「始终置顶」开关
- 显示样式:纯数字 / 圆形表盘,切换立即生效
- 实时设定时间(含「填入当前显示时间」)
- 倍率:支持正数、负数(倒转)、0(暂停)、小数
- 暂停 / 继续(继续时回到暂停前的倍率,按钮文案会显示是几倍)
- 快进五档:+5 秒 / +1 分钟 / +5 分钟 / +10 分钟 / +30 分钟

实现要点
- 走时是「基准时间 + 基准时刻 + 倍率」的锚点式模型(不累加、零漂移);
  倍率、暂停、倒转、快进因此是同一套机制的四个用法,互不打架
- 跳转动画做在「呈现时间」这一层:数字滚动与表盘指针扫动共用同一个中间值,
  所以永远同步,也不会跨 12 点倒着转一圈
- 无边框窗口的拖动(CSS app-region + 控件 no-drag)与拖边缘改大小
  (自己算几何 + IPC setBounds,因为 frame:false 下系统边缘命中不可靠)

测试 152 例:走时模型 / 改大小几何 / 呈现时间 / 两个渲染进程(DOM 桩)
This commit is contained in:
AskaEth committed 2026-09-15 01:31:07 +08:00
1 parent 892b9190aa
commit 9c7081b21d
27 files changed
+5467 -2

No files matched your search

+108 -2
View File
@@ -1,3 +1,109 @@
# ClockLab
# ClockLab · 可调速桌面时钟
一个简单的本地时钟计时器
一个用于**演练、演示、排练**的小工具:一个**可以任意调速的时钟**(走快、走慢、暂停、**倒着走**、一键快进),配上随时可开的**满屏时钟窗口**。
典型用法:现场排练时把时钟投到第二块屏上,需要"跳过 30 分钟"或"把时间倒回去重来一遍"时,不用真的等 —— 在控制窗口点一下就行。
---
## 一、两个窗口
程序启动后只出来**一个**窗口:
- **控制窗口** —— 普通窗口,所有操作都在这里;
- **时钟窗口** —— **默认不出现**,由控制窗口的「打开时钟窗口」按钮创建/关闭。
**时钟窗口的特点**:无标题栏、无工具栏、无边框 —— 投屏时不会露出窗口装饰。它**可以拖动移动**(按住空白处拖),**可以拖四条边和四个角改变大小**(最小 260×150)。
---
## 二、怎么操作
### 时钟窗口那一块
| 功能 | 说明 |
| --- | --- |
| **打开 / 关闭时钟窗口** | 按钮文案会跟着状态变;关掉随时能再开 |
| **时钟窗口始终置顶** | 让它压在所有窗口之上(现场投屏基本都要开) |
| **控制窗口始终置顶** | 单独一个开关,两个窗口互不影响 |
> 提醒:时钟窗口用的是**比普通置顶更硬**的级别,**可能会盖住任务栏**。如果你希望它"温柔"一点,见《DEVELOP.md》里的说明。
### 显示样式
- **纯数字** —— 大字号电子钟,`HH:MM:SS` 加日期;
- **圆形表盘** —— 带时针 / 分针 / 秒针的表盘。
切换**立即生效**,不用重开窗口。
### 时间与流速
| 功能 | 说明 |
| --- | --- |
| **设定时间** | 填时 / 分 / 秒,点应用,时钟立刻跳到那个时间 |
| **填入当前显示时间** | 把输入框一键填成时钟**现在显示**的时间(改之前先看一下当前值) |
| **倍率** | 支持 **正数、负数、0、小数**:`1` 正常、`2` 两倍速、`-1` **倒着走**、`0` 暂停、`0.5` 半速 |
| **暂停 / 继续** | 暂停后按钮会变成「**继续(回到 ×N)**」,N 是暂停前的倍率,点一下按原速度接着走 |
| **快进** | `+5 秒` / `+1 分钟` / `+5 分钟` / `+10 分钟` / `+30 分钟`,点了立刻往前跳(与当前倍率不冲突,倒着走时点快进也是往前跳) |
几个组合起来的效果:
- 想现场"重新来一遍":倍率填 `-1`,时钟就倒着走;到点了点「暂停」,再点 `+30 分钟` 往前调。
- 想演示"时间飞逝":倍率填 `10`,秒针会飞快转。
- 只想让时钟停在那儿:点「暂停」。
### 跳转时的动画
**快进、设定时间、继续**这些**一次性跳变**会播放动画:数字滚到新值、表盘指针扫过去(约 0.35 秒)。
**正常走时、倒转、高倍率不加动画** —— 那时数字本来就在飞快变化,再加动画只会糊成一团。跳变幅度小于 1.5 秒也直接跳(免得正常走时每秒都抖一下)。
---
## 三、怎么运行
### Windows
解压 `ClockLab-1.0.0-win-x64.zip`,双击里面的 **`ClockLab.exe`**。绿色版,不写注册表、不需要安装。
### Linux(ARM64)
```bash
tar -xzf ClockLab-1.0.0-linux-arm64.tar.gz # 解压(约 290 MB)
cd ClockLab-1.0.0-linux-arm64
./clocklab
```
> ⚠️ **解压前建议先校验**:`sha256sum ClockLab-1.0.0-linux-arm64.tar.gz` 对着交付时给的哈希看一眼。传输中断过的话,`tar` 会报 `异常的 EOF`,那就是没传完(不是包坏了)。
---
## 四、常见问题
**界面黑屏 / 花屏 / 一闪就退(国产平台常见)**
多半是显卡驱动下的硬件加速不兼容,用这两个参数之一启动:
```bash
./clocklab --disable-gpu # 关掉硬件加速(最常用)
./clocklab --in-process-gpu # 或者让 GPU 跑在主进程里
```
**窗口拖不动 / 改不了大小**
先确认拖的是**时钟窗口的空白处**(按钮和边缘热区不在拖动区内);改大小要把鼠标移到**四条边或四个角**上(光标会变成双向箭头)。
**文字太小 / 太大**
直接拖时钟窗口的边缘改变尺寸,数字和表盘会跟着缩放。
---
## 五、这个项目在哪
源码与构建说明见同目录的 **[DEVELOP.md](./DEVELOP.md)**。已经打好的包在 `dist/`:
```
dist/ClockLab-1.0.0-win-x64.zip Windows x64 绿色版
dist/ClockLab-1.0.0-linux-arm64.tar.gz Linux ARM64(飞腾 D2000 等)
```