CCR
1
简介
一个能够自动贴边隐藏并在你设置的时间弹出提醒的程序(还能同时播放自定义提示音呢)。
(原名AutoTipClock)
其实我把他当上课铃和下课铃用的
本程序支持设置多个时间提醒,支持自定义系统快捷键,支持自定义文字颜色、背景颜色、背景透明度等诸多设置。
视频演示
使用说明
- 首次打开时自动生成配置文件到同目录
- 修改配置文件后请手动重启程序(颜色、透明度除外,为实时更改)
- 点击托盘或使用快捷键即可唤出程序,再次点击可隐藏
- 可拖动软件调整位置
- 可以播放自定义铃声(仅支持wav格式)
配置文件如下
# ──────────────────────────────────────────────
# Tip Clock 配置文件
# ──────────────────────────────────────────────
# 时间格式: HH:MM:SS (24小时制)
# audio: 配置目录内的 WAV、FLAC 或 MP3 文件名(可省略扩展名)
# 省略 audio 时仅显示时钟,不播放音频
# 热重载: display_time 和 [[schedule]](自动规范化、去重)
# 仅重启生效: auto_start、volume、hotkey_mod、hotkey_key
# 颜色、透明度和窗口位置请通过程序界面修改
# ──────────────────────────────────────────────
[general]
# 开机自启 (Windows 启动时自动运行)
auto_start = {auto_start}
# 背景颜色 RGB (0-255), 不透明度 (0-100, 0=全透明)
bg_r = {bg_r}
bg_g = {bg_g}
bg_b = {bg_b}
bg_opacity = {bg_opacity}
# 文字颜色 RGB (0-255)
text_r = {text_r}
text_g = {text_g}
text_b = {text_b}
# 临时显示时间, 秒 (1-60)
display_time = {display_time}
# 默认音量 (0-100)
volume = {volume}
# 显示/隐藏快捷键
# 修饰键: alt, ctrl, shift, win (可用 + 组合)
hotkey_mod = "{hotkey_mod}"
hotkey_key = "{hotkey_key}"
# 窗口显示位置 (左上角像素坐标, -1 表示自动定位)
window_x = {window_x}
window_y = {window_y}
[[schedule]]
# 有声音的提醒;首次创建配置时会同步生成 demo.mp3
time = "08:00:00"
audio = "demo"
[[schedule]]
# 静音提醒:省略 audio
time = "13:42:57"
下载
https://github.com/Mikachu2333/tip_clock/releases/latest
2 个赞
Y_z
(Y_z)
2
对了,之前还发现个问题忘说了,运行久了之后提示时间会不准(不清楚是不是个例)
然后将75行time_now = time_now.addsecond(1) 改成time_now = time()就好了
再就是直接加上了一个整体透明度mainForm.transparent(99)修改了颜色、换了字体,缺点是文字也透明了
CCR
3
一开始原代码就是 time_now = time() 
后来发现占用系统资源稍高,有时能达到0.1%,给我吓得直接改掉了,然后就变成了现在这样子,每隔3小时刷新一次系统时间,大幅度减少交互。
刚刚测试了一下,找到了原因,是因为sleep(1000)实际上不能精确且延迟高导致的时间不断减慢。然后我又改回了一开始的反复刷新的版本,结果发现弹出的时候又开始一卡一卡的了,时间无法实时刷新……时间精确和动画流畅二者好像只能取其一……果然还是得暑假用正经语言重构一遍比较好
至于透明度……仍然在想办法实现底色透明文字实体……
其实可以改成在弹出之前10秒才取一次准确时间吧,其他时候都用addsecond。最好的方式应该是用多线程,把时间校准和移框动画分别放在不同的线程里
CCR
5
现在已经是多线程了,3个线程呢…… 
第一个线程负责GUI的显示隐藏,系统快捷键注册,程序退出等,是aardio自带的,无需更改
第二个线程负责一开始载入ini配置文件并将相关配置传递给第三线程,同时使第三个线程开始运行
第三个线程负责接收第二个线程传入的数据并获取时间、暂停时间、判断是否弹出等主要设置
现在正在头大要不要把第三个线程再拆分一下
Xenon
8
有趣啊。昨天看到推送的时候就在想是不是aardio写的,今天一看源码果然是。找个时间学习一下代码。
难得碰到一样用aardio的人,有机会可以交流一下。
CCR
10
其实如果只是倒计时的话你可以用另一个大佬开发的软件的 
这些功能有计划开发,等考完试暑假里面会用正经的语言全部重构一遍顺便加上新功能
CCR
11
好啊好啊,用aar的确实少,网上的相关讨论也很少见……
Xenon
12
另外我刚才粗略看了一下源码,你时间的显示方式用的是static控件?
我觉得plus控件可能更好用,所以我打算仿写一个,看看效果如何。
CCR
13
我也想改plus控件来着,不过发现很多属性得重新写一遍,各种多线程传参要命就没管
还有,大哥你要是有能力就帮忙改改多线程吧
尤其是看看能不能在多线程内指定快捷键,不要让用户手动去点右下角的任务栏图标……我一直在寻找方法,一直以来每次都是传参阻碍了我……
目前已经放弃了这个东西,暑假看看重构一遍算了 
Xenon
14
如果不去做窗口的滑动动画,是否就不需要多线程了?
目前我拿plus控件已经做了一个时钟出来,还没加上定时弹出的功能,但是应该快了。暂时没发现哪里需要多线程 

CCR
16
你好,软件的内部颜色需要手动更改代码实现,因过于麻烦,暂时未提供相关借口与设置,现给你手动编译了一个版本。
请查看邮箱附件。
CCR
17
CCR
18
CCR
20
1.3.6 已发布
Release 1.3.6 新功能:热重载 · Mikachu2333/tip_clock
- 自动重载提醒时间点设置、临时显示时间设置
- 增加README.md中的同个时间点多次提醒的说明
- 托盘菜单文字消歧义
- 修复配置覆写
- 改进透明度窗口输入体验
- debug版本改进日志输出体验