Перейти к основному содержимому
Y

dsh-work-reminder

yujiajie01/dsh-work-reminder

Reminds you to stop working at several times a day (default 12:10 and 18:00, up to 12 editable points): at each time the host raises the DSH window to the front — restoring it if minimized and taking the foreground even from another application — and a full-screen animated alert appears with a five-minute snooze and a dismiss button. The alert can show your own image (SVG, PNG, GIF, JPEG or WebP, with GIF animation) instead of the default clock icon; times, image, mute and the auto-focus switch persist in localStorage.

Установка

dsh plugin --profile web add github:yujiajie01/dsh-work-reminder

README

下班提醒 / Work Reminder

在 DSH 网页端按多个时间点提醒你休息:到点自动把 DSH 窗口真正拉到最前面,并弹出全屏动态提醒,可以「知道了」或「延迟五分钟」。

默认时间:中午 12:10 与 下午 18:00。

功能

  • 多个提醒时间点:默认 12:10 和 18:00,点「提醒时间」可增删改,最多 12 个,每天重复。设置存在浏览器 localStorage,刷新后仍有效。
  • 自动聚焦窗口(真的会切过去):到点由宿主进程把 DSH 桌面窗口拉到最前;窗口最小化会先还原。即使你正在别的窗口里打字(浏览器、编辑器、终端),焦点也会被切到 DSH。
  • 自定义提醒图片:除了默认的时钟图标,可以在设置里选一张自己的图 —— SVG、PNG、GIF、JPG、WebP 都支持,GIF 会动。图片以 data URL 存在 localStorage,上限 3 MB;随时可一键恢复默认图标。
  • 全屏动态提醒:满屏遮罩 + 大字号渐变标题(流光动画)、脉冲光环、卡片弹入;自定义图片会带上浮动的呼吸动画。尊重系统的「减少动态效果」设置。
  • 提示音:三组上行双音,约四秒;右侧喇叭按钮可静音。浏览器要求先与页面交互才能出声,首次点一下页面即可。
  • 倒计时:输入框下方的小胶囊一直显示「下次提醒 18:00 · 05:42:11」,最后一小时变琥珀色。

安装

dsh plugin --profile desktop add https://github.com/yujiajie01/dsh-work-reminder

安装后重启 Harness 生效。

为什么聚焦要由宿主做

网页没法把自己的窗口提到最前 —— 浏览器不允许,这是刻意的安全设计。所以插件的 index.js 在宿主进程里做这件事:

  1. 按窗口标题枚举顶层窗口,找到 DSH 的窗口句柄。Electron 的窗口属于渲染进程,主进程上 MainWindowHandle 是 0,按进程名找是找不到的。
  2. 若窗口最小化,先还原。
  3. 用 AttachThreadInput 把输入队列附加到当前前台线程 —— 否则 Windows 会静默拒绝后台进程抢前台(SetForegroundWindow 返回 false,前台纹丝不动)。
  4. 最后用 GetForegroundWindow 核对结果,而不是相信返回值。

修改默认时间

改 client.js 顶部的常量:

const DEFAULT_TIMES = ['12:10', '18:00'];

已保存过设置的用户仍用自己存的列表 —— 默认值只对首次使用生效。

结构

  • index.js — Host 半:POST /api/work-reminder/focus(聚焦窗口)、GET /api/work-reminder/state(本机是否支持)。两条路由都只接受本机同源请求。
  • client.js — Client 半:时间表、自定义图片、全屏浮层、提示音,挂在 conversation.composer.dock 插槽。
  • locale/*.json — 插件管理器中的标题与描述。
  • icon.svg — 插件默认图标(原创)。

平台

窗口聚焦目前只实现了 Windows。其它平台上提醒照常弹出、提示音照常响,只是不会主动把窗口拉到前面。

Похожие плагины