引言:一个被“逼”出来的实用工具

作为一个常年与电脑打交道的人,你是否也经历过这样的场景:

  • 专注写代码时,系统角落弹出一个小小的通知:“下午3点有会”,等你回过神来,会议已经开始半小时了...
  • 设置了备忘录,但它只是在通知栏里静静地躺着,根本起不到“提醒”的作用。
  • 尤其是在 Deepin 这样追求简洁的 Linux 系统上,想找一个界面美观、提醒方式强力、功能又恰到好处的提醒工具,真的太难了!

通知太“温柔”,我们总“错过”。这个痛点折磨了我很久,于是,我决定自己动手,丰衣足食——用 Python 为自己,也为有同样困扰的你,打造一个想忽略都难的桌面提醒工具:DeskReminder

DeskReminder App Screenshot

DeskReminder:不止是“提醒”,更是“必达”

忘了那些“阅后即焚”的系统通知吧!DeskReminder 的设计初衷就是要足够“霸道”,让你的每一个重要事项都能被郑重对待。

当提醒时间一到,它会**“Duang”地一下在屏幕正中央**弹出一个独立的、置顶的对话框,并伴随着清脆的铃声(可以自定义哦!)。你必须亲手点击“知道了”,它才会消失。

DeskReminder Alert

这种强制交互的设计,让你无法轻易忽视,确保信息100%送达

三大核心功能,满足你挑剔的需求

在动手之前,我为它设定了几个核心目标。如今,这些功能都已完美实现:

1. 灵活多样的提醒模式

无论你的需求多变,总有一种方式适合你:

  • 延迟提醒:最简单直接的方式。“10 分钟后提醒我起来活动一下”,输入数字即可,省时省力。
  • 指定时间:为重要约会和会议量身定做。“2025-10-31 10:00 记得参加线上分享会”,精准到分钟。
  • Cron 表达式:为极客和效率达人准备的终极武器!无论是“每天早上 9 点开站会” (0 9 * * *) 还是“每周五下午 5 点交周报” (0 17 * * 5),都能轻松设定。

更贴心的是,为了让你告别“猜谜式”的 Cron 编写,我特地加入了**“最近10次执行时间预览”**功能,在你输入表达式时,它会立刻计算并以下拉框的形式告诉你下一次触发的时间,一目了然!

Cron Preview

Cron Preview
2. 直观高效的提醒管理 🗂️

所有的提醒任务都可以在“提醒管理”列表中清晰地看到。你可以随时:

  • 查看状态:一眼就能分辨出任务类型、下次执行时间以及是否启用。
  • 一键操作:轻松完成对任务的启用、禁用、编辑删除
  • 重复利用:对于已经提醒过的一次性任务,不用删除,直接编辑修改时间,即可让它“复活”,省去重复创建的麻烦。

3. 真正实用的后台运行与跨平台 💻

  • 最小化到托盘:点击关闭按钮,程序不会退出,而是静静地“潜伏”在系统托盘里,不占用任务栏空间,时刻准备着下一次提醒。
  • 数据持久化:所有提醒和设置都会自动保存在本地,即使关闭电脑,下次打开依然无缝衔接。
  • 跨平台支持:基于 Python 和 Tkinter 构建,无论你用的是 Windows、macOS 还是 Linux (Deepin/Ubuntu...),都能获得一致的体验。

技术亮点:给爱钻研的你

作为一名开发者,除了实现功能,代码的健壮性和优雅性也是我所追求的。在这个小工具的开发过程中,我踩了不少坑,也沉淀了一些有意思的解决方案:

  • 高效的任务调度核心:没有用复杂的库,而是采用 Python 内置的 heapq (最小堆) 模块构建了一个轻量级的调度器线程。它能以极低的资源占用,精准地找到下一个最近要触发的任务并准时执行。
  • 顽固的跨平台兼容
    • Linux 托盘菜单修复:解决了在 Deepin 等部分 Linux 发行版上 pystray 库托盘图标右键菜单不显示的问题,通过强制指定 appindicator 后端搞定。
    • 智能声音播放:封装了一个健壮的 SoundPlayer 类,优先使用 simpleaudio 播放 WAV,对 MP3 等格式则会自动寻找系统中安装的 vlc, mpg123 等命令行播放器,甚至还能回退到 pygame,确保铃声在各种环境下都能响起。
    • 中文字体显示优化:针对 Tkinter 在不同平台下 Treeview 列表行高不一致、导致中文字体被遮挡的“老大难”问题,通过创建自定义样式,强制设定了足够大的 rowheight,完美解决了显示问题。
  • 数据安全与用户体验
    • 原子化写入:通过“先写临时文件再重命名”的方式保存 JSON 数据,有效防止了在保存过程中因意外中断(如断电)导致的数据文件损坏。
    • 细节打磨:输入框支持 Home / End 键快速跳转、新建任务后自动清空表单、添加了详细的日志系统......这些细节让工具用起来更顺手。

开源,与你共享!

如果你也曾被“记不住事”所困扰,或者想找一个简单实用的 Python 桌面应用项目来学习,那么 DeskReminder 绝对是一个不错的选择。

项目已在 GitHub 开源,欢迎大家前来 Star、Fork,或者提出你的宝贵建议!

希望这个从真实需求出发的小工具,也能成为你工作学习中的得力助手,让我们一起告别错过,拥抱高效!

Q.E.D.


寻门而入,破门而出