桌面软件 活跃维护

stretchly

hovancik/stretchly

休息时间提醒应用

6578
Stars 标星
562
Forks 分支
32
Watchers 关注
128
Open Issues
JavaScript
主要语言
BSD-2-Clause
开源协议
83.1 MB
仓库大小
1 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:hovancik/stretchly
git clone https://github.com/hovancik/stretchly.git
git clone git@github.com:hovancik/stretchly.git
README.md trunk

英文原文正文为项目原始 README(英文),本站后续会翻译为中文,当前仅剔除图片与无关章节并统一排版。

Stretchly

休息时间提醒应用

Stretchly 是一个跨平台的 Electron 应用,它会在你使用电脑工作时提醒你休息。

安装

macOS、Windows 和 Linux 的最新官方安装程序和便携版本可以在 Github Releases 页面找到。有关您操作系统支持的版本,请查看 Electron 的支持版本。继续阅读以了解特定操作系统的详细信息。

macOS

需要 macOS Ventura (13) 或更高版本。

建议通过运行以下命令,使用 Homebrew tap 安装 Stretchly。详细信息请参阅 应用程序签名。

brew install --cask hovancik/stretchly/stretchly

针对 macOS 用户的注意事项:Homebrew 最近禁用了 --no-quarantine 标志。因此,macOS Gatekeeper 可能会在应用首次启动时阻止它,并显示“未识别的开发者”警告。要绕过此问题,请转到 System Settings > Privacy & Security,向下滚动,然后在 Stretchly 提示旁单击“仍要打开”。或者,在 Finder 中找到该应用,按住 Control 键单击(或右键单击)其图标,然后选择“打开”。

升级时,请运行以下命令。别忘了先退出 Stretchly。

brew upgrade --cask hovancik/stretchly/stretchly

卸载:

brew uninstall --cask hovancik/stretchly/stretchly
brew untap hovancik/stretchly

注意: 默认的 homebrew/cask tap 中也存在一个 stretchly cask。它已被弃用,并且计划在 2026 年 9 月 1 日禁用,因为该应用未签名且未通过 Homebrew 的 Gatekeeper 检查。在此之前,单独使用 stretchly 名称可能会产生歧义 — 始终使用完整限定名 hovancik/stretchly/stretchly 来获取此 tap 的版本。

如果你在 macOS 上使用 Alfred 或 Raycast,你可以使用这个 Alfred 工作流 或 Raycast 扩展 与 Stretchly 进行交互。

应用签名

Stretchly 仅是临时签名的(由于成本问题且我没有支持的 Apple 设备),因此你在首次运行时需要使用一个变通方法。该变通方法取决于你使用的是 Intel 芯片还是 Apple Silicon 芯片。

sudo xattr -r -d com.apple.quarantine /Applications/Stretchly.app

不确定你的电脑使用的是哪款芯片?这里可以查看。

窗口

你也可以通过 Chocolatey 安装 Stretchly,只需在命令行或 PowerShell 中运行以下命令:

choco install stretchly

更新:

choco upgrade stretchly

Stretchly 也可以在微软的 winget 中获取。你可以通过运行以下命令来安装它:

winget install -e --id Stretchly.Stretchly

Stretchly 也可以在官方 Microsoft Store 找到。

您可以通过以管理员身份运行以下命令,为所有用户静默安装 Stretchly:

installer.exe /S /allusers

Linux / 便携式

有关便携版本和 Linux 安装程序,请访问 Github Releases 页面。大多数常用的发行版都应覆盖。

Stretchly 也可在一些 Linux 商店中获取:

对于 Debian/Ubuntu 及其衍生版本,你也可以尝试这个 apt 仓库:deb [trusted=yes] https://apt.fury.io/hovancik/ /。

Linux 注意事项

请参阅 http://electron.atom.io/docs/api/tray/ 了解 Electron 在 Linux 上的托盘详细信息。

对于自然休息,你可能还需要一些软件包(libxss-dev)。

如果 Stretchly 无法启动,你可能需要运行:

sudo sysctl kernel.unprivileged_userns_clone=1
sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0

详细信息请参阅 这里。根据你的发行版,你可能需要做类似操作,以便在重启后保留偏好设置:将 kernel.unprivileged_userns_clone=1 和 kernel.apparmor_restrict_unprivileged_userns=0 添加到 /etc/sysctl.d/00-local-userns.conf 并重启。

如果你使用 Wayland 并且希望能够监控空闲时间,你需要将你的用户添加到 input 组,使用 sudo gpasswd --add $USER input(根据你的发行版而定),然后注销/重新登录以生效。

从源代码运行

要从源代码运行 Stretchly,你将需要 Node.js,最好使用 package.json 中指定的版本。克隆仓库,运行 npm install,然后直接运行 npm start 来启动 Stretchly。

自定义安装程序

在运行 npm install --no-save 之后,你可以通过运行 npm run pack 或 npm run dist 来创建自定义安装程序。

默认行为

当您第一次运行Stretchly时,会显示一个欢迎窗口,您可以在其中更改语言、查看首选项、查看在线教程或直接继续使用默认首选项。

Stretchly 本身驻留在系统托盘中,仅会不时显示一个提醒窗口,窗口中包含休息的建议。

默认情况下,每10分钟有一次20秒的小休,每30分钟有一次5分钟的大休(在经过2次小休后)。

在小休前10秒(大休前30秒)会通知您,以便您准备暂停工作。

当休息开始时,你可以将其推迟一次,迷你休息为 2 分钟,长休息为 5 分钟。然后,在经过特定时间间隔后,你可以跳过休息。两种操作都可以通过点击窗口底部的链接或使用 Ctrl/Cmd + X 键盘快捷键来完成。

点击托盘区域的Stretchly图标,将显示当前休息状态、提供额外功能的菜单项,并链接到首选项。

Stretchly 会监控您的空闲时间,因此当您空闲5分钟时,休息将暂停,直到您返回。

Stretchly 还会监控“勿扰模式”,因此当Do Not Disturb模式开启时,休息会暂停。

Stretchly 遵循您的系统主题,也提供暗色模式。

从命令行与Stretchly交互

当Stretchly实例正在运行时,可以使用stretchly命令从命令行与其交互。

常规Windows安装程序会将stretchly添加到PATH,因此可以在新终端中运行命令,而无需指定完整的可执行文件路径。

输入stretchly help可以获取所有可用命令和选项的列表,以及一些示例。

偏好设置

大多数偏好设置可以通过点击托盘菜单中的“偏好设置”项目进行自定义。(在 Windows 上,你也可以双击托盘图标来打开偏好设置。)

偏好设置分为多个类别,建议你花些时间通过自定义它们,让 Stretchly 更加符合你的需求。

你也可以恢复默认设置,以返回到默认的偏好状态。

高级偏好设置

虽然大多数偏好设置可以通过应用程序进行编辑,但某些选项和值不可用,以使应用程序易于理解和设置。

所有偏好设置都保存在 JSON 文件中,因此您可以按照需要设置 Stretchly。在查看偏好设置的关于部分时,使用 Ctrl/Cmd + D 快捷键,可以显示调试信息并显示指向偏好设置文件的可点击链接。

建议在编辑偏好设置文件之前退出 Stretchly。

为了确保一切按预期工作,最好检查偏好设置文件的格式是否正确,例如使用 jsonformatter。

在您对偏好设置文件进行修改后,偏好设置或其他地方显示的一些值可能显示不正确,因为 UI 期望特定值,并且未处理用户手动修改偏好设置文件的情况。

一些额外的偏好设置可以在 贡献者偏好设置 中找到。这些偏好设置由 徽章 标记。

带有 标记的偏好设置可能无法正常工作,并可能破坏 Stretchly。使用风险自负。

注意: 在 1.0 版本之前,Mini 休息和 Long 休息分别被称为微休息(Microbreaks)和休息(Breaks)。为了保持升级顺利,它们在偏好设置文件和代码中仍然使用该名称。

应用程序中可编辑的偏好设置

以下是可以通过应用程序编辑的偏好设置。如果应用程序中的值不适合您的使用习惯,您可以手动编辑它们:

  • microbreakDuration - Mini 休息的持续时间(毫秒)
  • microbreakInterval - Mini 休息的间隔(毫秒)
  • breakDuration - Long 休息的持续时间(毫秒)
  • breakInterval - Long 休息的间隔(Mini 休息)(毫秒)
  • breakNotification - 在 Mini 休息前显示通知
  • microbreakNotification - 在 Long 休息前显示通知
  • microbreak - 启用 Mini 休息
  • break - 启用 Long 休息
  • microbreakStrictMode - 为 Mini 休息启用严格模式
  • breakStrictMode - 为 Long 休息启用严格模式
  • mainColor - 主题颜色代码(用于长时间休息),
  • miniBreakColor - 主题颜色代码(用于短暂休息),
  • transparentMode - 以透明方式显示休息窗口
  • longBreakAudio - 声音主题名称(用于长时间休息)
  • miniBreakAudio - 声音主题名称(用于短暂休息)
  • fullscreen - 在全屏模式下显示休息
  • ideas - 显示休息建议
  • naturalBreaks - 监控待机时间
  • allScreens - 在所有屏幕上显示休息
  • language - 语言
  • useMonochromeTrayIcon - 使用单色图标
  • trayIconStyle - 菜单栏图标样式:默认、休息时间或休息进度
  • silentNotifications - 启用声音
  • monitorDnd - 监控勿扰模式
  • checkNewVersion - 检查新版本

编辑休息建议

在首选项文件中,将 useIdeasFromSettings: false, 更改为 useIdeasFromSettings: true,,并编辑 breakIdeas 和 microbreakIdeas。

请注意,当有新的 Stretchly 版本发布且包含新的休息建议时,你的自定义建议不会被覆盖。你可以在首选项窗口中点击“恢复默认值”来将休息建议重置为最新默认值。

在休息建议中使用 HTML

你可以在自定义休息建议中使用简单的 HTML 格式来增强其外观:

允许的 HTML 元素:

  • <a> - 链接(仅允许 https:// 和 mailto: URL)
  • <b> - 粗体文本
  • <i> - 斜体文本
  • <br> - 换行
  • <p> - 段落
  • <h1>、<h2>、<h3> - Headings
  • `` - 本地图片(仅文件名,见下文)

使用链接:

"breakIdeas": [
  {
    "data": ["<b>Stretch Time!</b>", "Try this <a href=\"https://example.com/stretch\">stretching routine</a>"],
    "enabled": true
  }
]

使用本地图片:

将你的图片放在 Stretchly 用户数据目录中的 images 文件夹中(详见 设置 → 关于 → 调试信息 获取确切位置)。然后仅通过文件名引用它们:

"breakIdeas": [
  {
    "data": ["<b>Desk Yoga</b>", "Try this pose: "],
    "enabled": true
  }
]

支持的图像格式:PNG、JPEG、WebP、GIF。仅允许使用本地 images 文件夹中的图像——出于安全原因远程 URL 将被阻止。

Stretchly 会清理所有 HTML,通过删除任何不支持的标签或不安全的内容来保持休息窗口的安全。

编辑日出时间以暂停休息直到早晨

在偏好设置文件中,你可以将 morningHour 设置为暂停到今天或明天的该小时。否则,你可以将 morningHour: "sunrise" 并在偏好设置中设置 posLatitude、posLongitude,以便暂停到你所在地区的实际日出时间。例如,如果你住在波士顿,你可以设置:morningHour: "sunrise", posLatitude: 42.3, posLongitude: 71

不同的迷你休息和长休息声音

要为迷你休息播放不同的声音,请将 miniBreakAudio 设置为所需值(crystal-glass、silence、tic-toc、wind-chime)。

迷你休息和长休息使用不同的颜色主题

要为迷你休息设置不同主题,请将 miniBreakColor 设置为所需值,例如 #123456。

请勿打扰检查间隔

在偏好设置文件中,将 monitorDndCheckInterval 设置为毫秒值:表示检查“请勿打扰”状态的频率。数值越大意味着 CPU 和能源消耗越低,但检测响应会略微延迟。在 macOS 和 Linux 上,这种检查可能相对耗费资源,因此增加数值可以显著降低能耗。默认值为 2000,即 2 秒。

延迟/结束休息快捷键

在偏好设置文件中,将 endBreakShortcut 设置为你偏好的值。我们不验证此输入,因此请查阅 Electron 文档 获取可用的按键和修饰符值。当某个加速键已经被其他应用占用时,该操作将静默失败。这是操作系统的预期行为,因为它们不希望应用竞争全局快捷键。

如果你想禁用快捷键,请将值设置为空字符串 ""。

默认值是 CmdOrCtrl+X。

手动结束休息模式

如果你希望休息在你手动结束前暂停,而不是倒计时结束时自动结束,请设置:

"miniBreakManualFinish": true,
"longBreakManualFinish": true

一旦启用,休息将正常运行直到达到 100%,然后窗口会切换为显示休息开始以来的已用时间。您必须按下完成按钮或使用 endBreakShortcut 来结束休息。

切换断开快捷方式

在暂停和跑步休息之间切换。

在首选项文件中,将 pauseBreaksToggleShortcut 设置为你喜欢的值。我们不会验证此输入,因此请查看 Electron 的文档 以获取键和修饰键的可用值。当某个加速键已被其他应用占用时,此调用将静默失败。这种行为是操作系统有意为之,因为它们不希望应用程序争夺全局快捷键。

如果您想禁用快捷方式,请将值设置为空字符串 ""。这也是默认值。

暂停时间的短卡

你还可以在偏好文件中修改以下值,设置快捷方式暂停休息时间:

  • pauseBreaksFor30MinutesShortcut
  • pauseBreaksFor1HourShortcut
  • pauseBreaksFor2HoursShortcut
  • pauseBreaksFor5HoursShortcut
  • pauseBreaksUntilMorningShortcut

如果你想禁用快捷方式,请将值设置为空字符串 ""。这也是默认值。

跳到下一个休息快捷方式

在偏好设置文件中,将 skipToNextScheduledBreakShortcut、skipToNextMiniBreakShortcut、skipToNextLongBreakShortcut 设置为你喜欢的值。我们不会验证此输入,因此请检查 Electron 的文档 以获取键和修饰键的可用值。当给定的快捷键已被其他应用程序占用时,此调用将默默失败。这种行为是操作系统有意设计的,因为它们不希望应用程序争夺全局快捷键。

如果您想禁用快捷方式,请将值设置为空字符串 ""。这也是默认值。

重置破坏快捷方式

在偏好设置文件中,将 resetBreaksShortcut 设置为您偏好的值。我们不会验证此输入,因此请查看 Electron 的文档 了解键和修饰符的可用值。当给定的加速器已被其他应用占用时,此调用将静默失败。操作系统设计的这种行为是有意的,因为它们不希望应用程序争夺全局快捷键。

如果您想禁用快捷方式,请将值设置为空字符串 ""。这也是默认值。

破窗颜色

在偏好设置文件中,将 mainColor 改为您喜欢的任何颜色。

节目中断倒计时仅在一个屏幕上播放

默认情况下,当在所有屏幕上显示休息时间(allScreens: true)时,倒计时和休息想法会显示在每个屏幕上。如果你更希望其他屏幕保持空白,只在一个屏幕上显示倒计时和想法,可以在首选项文件中将 breakContentScreen 设置为以下选项之一:

  • "all" - 在所有屏幕上显示内容(默认)
  • "primary" - 仅在主屏幕上显示内容
  • "cursor" - 在中断开始时,仅显示光标所在屏幕上的内容
  • 屏幕索引(例如 0、1)- 仅在该屏幕上显示内容

当 allScreens 为 false 或 showBreaksAsRegularWindows 为 true 时,此选项无效。无效的值将回退到 "all"。

暂停/恢复功能只有在特定命令运行时才会中断

通过编辑偏好设置文件中的 appExclusions,您可以自动控制 Stretchly 休息的暂停时间。

如果你想让 Stretchly 在特定应用运行时暂停,可以设置这样一个值(休息在 Skype 或 Atom 运行时暂停):

Linux

"appExclusions": [
    {
        "rule": "pause",
        "active": true,
        "commands": [
            "/usr/share/skypeforlinux/skypeforlinux",
            "atom"
        ]
    }
]

窗口

"appExclusions": [
    {
        "rule": "pause",
        "active": true,
        "commands": [
            "librewolf.exe",
            "masseffectlauncher.exe"
        ]
    }
]

如果你希望 Stretchly 在特定应用程序运行时也能运行,你可以设置这个值(当 Skype 或 Atom 未运行时,休息将暂停):

Linux

"appExclusions": [
    {
        "rule": "resume",
        "active": true,
        "commands": [
            "/usr/share/skypeforlinux/skypeforlinux",
            "atom"
        ]
    }
]

窗口

"appExclusions": [
    {
        "rule": "resume",
        "active": true,
        "commands": [
            "librewolf.exe",
            "masseffectlauncher.exe"
        ]
    }
]

您可以指定多个值,(因为 appExclusions 是数组),Stretchly 会取第一个被标记为 "active": true 的值。也可以指定多个 commands。命令区分大小写,但在不同平台上似乎不一致。因此,有时可能需要全部小写(这在 Windows 上被注意到过)。命令也可以是子字符串,这意味着包含 "exe" 的规则将在有任何运行中的进程名称或 cmd 属性包含 "exe" 时触发。

对于 Windows,请注意未指定路径。这是因为在 Windows 上,我们使用的 API 仅检查正在运行的进程的名称,在大多数情况下为 "process_name.exe"。如果尝试指定路径,将无法工作。

您还可以以毫秒为单位指定 appExclusionsCheckInterval:数值越低表示检查越频繁,但 CPU 使用率也更高。默认值为 2000,即 2 秒。

在挂起/锁定时暂停休息

如果您不想在系统从挂起/锁定恢复后重置休息时间,请将 pauseForSuspendOrLock 设置为 false。

显示休息的监视器

如果您已禁用在所有监视器上显示休息窗口,可以指定哪一个监视器显示休息窗口。将 screen 值设置为以下之一:

  • "primary" - 由操作系统提供的主监视器
  • "cursor" - 当前鼠标所在的监视器
  • "0"(或 0)、"1"、"2" 等,其中 "0" 是 OS 返回的第一个监视器,依此类推

休息健康模式

受视频游戏中用以表示低血量的屏幕边缘光晕启发,这种模式在休息屏幕边缘增加了视觉指示器。效果开始时较为微妙,每次跳过或推迟休息时会逐渐增强,而当您让休息自然完成时,效果又会逐渐消退。要启用此功能,将 breakHealthMode 设置为 true。

严格模式下显示托盘菜单

如果您希望即使在严格模式下也显示托盘菜单,请将 showTrayMenuInStrictMode 设置为 true。

在首选项中显示自定义消息

如果您希望在首选项中显示自定义消息,请将 customPreferencesMessage 设置为您喜欢的字符串。

这对于企业安装可能会有帮助。

禁用应用更新功能

如果您想禁用与应用更新相关的功能,请将 disableAppUpdateFeatures 设置为 true。这将使 Stretchly 不检查新版本,并隐藏应用中的相关元素。此值优先于 checkNewVersion 和 notifyNewVersion。

这对于企业安装可能会有帮助。

在调试信息中隐藏首选项文件的位置

如果你想在调试信息中隐藏首选项文件的位置,请将 hidePreferencesFileLocation 设置为 true。

这对于企业安装可能很有用。

隐藏严格模式首选项

如果你想在首选项窗口中隐藏严格模式首选项部分,请将 hideStrictModePreferences 设置为 true。

这对于企业安装可能很有用。

从配置文件设置自动启动

如果你希望自动启动基于配置文件中的值工作,请设置 openAtLogin。

这对于企业安装可能很有用。

开发

欢迎通过 Issues 和 Pull Requests 参与该应用的开发。

在实现功能之前,请先打开一个 Issue,以便我们确保没有其他人正在开发该功能,并且更改将被接受。在实现之前讨论更改非常重要(为什么我们要添加它?它应该如何工作?它应该看起来怎样?它将放在哪里?...)。

先决条件

  • Node.js(请使用 package.json 中指定的版本)
    • Linux/MacOS - 您可能需要使用 Node 版本管理器 安装特定版本
    • Windows - 下载特定版本的安装程序;安装过程中勾选“Install Additional Tools for Node.js”
  • git
  • Github 账户,如果您希望将您的更改提交到上游

现在您可以用 git clone https://github.com/hovancik/stretchly.git 克隆仓库。切换到新创建的目录并运行 npm i 安装所需的 Node 包。如果您的系统运行的是 Python 3.12 及更高版本,您还需要安装 setuptools,例如使用 pip install setuptools,因为 distutils 已经被弃用。

继续阅读。

调试

你可以使用 Stretchly 内置的调试快捷键,通过在“关于”部分按 Ctrl/Cmd + D 来显示如下信息:

  • 偏好设置和日志文件的位置(点击文件位置将打开该文件),
  • 休息计划器的调试信息

您可以将调试信息复制到剪贴板。

如果您使用 npm run dev 命令在开发模式下启动 Stretchly,可以通过浏览器在 http://localhost:9222 调试应用程序。

日志记录

Stretchly 使用 [log](https://github.com/megahertz/electron-log) 包进行额外日志记录。格式如下:

  • System: my message 用于操作系统相关的消息,例如:System: resume or unlock
  • Stretchly: my message 用于 Stretchly 相关的消息

翻译

你可以在 Weblate 上帮助翻译 Stretchly。请考虑使用你的 Github 账户加入,以便正确获得署名。

已知问题

  • 在原生 Wayland 上,结束休息快捷键被禁用,因为临时全局快捷键无法可靠释放。请使用休息控制或使用 X11 后端启动 Stretchly(stretchly --ozone-platform=x11)。在 KDE 上,请在系统设置 > 键盘 > 快捷键中删除早期 Stretchly 版本创建的任何分配。
  • Windows 商店版本的自动启动无法正常工作,因此已被禁用。若要使用自动启动,请使用常规安装程序安装 Stretchly,或从 shell:AppsFolder(Win R)创建 Stretchly 快捷方式并将其移动到 shell:startup 文件夹(Win R)。
  • Snap 版本可能无法在原生 Wayland 上启动。作为解决方法,请使用 X11 后端启动(stretchly --ozone-platform=x11)。详情见 #1693。
  • Wayland 多显示器窗口位置问题会将所有休息窗口放在同一显示器上;如有需要,请使用 X11 后端启动(stretchly --ozone-platform=x11)。详情见 electron/electron#48749。

MacOS

  • 用户如果在休息后遇到 Dock 隐藏问题,需要通过 command + tab 或鼠标点击才能重新获得焦点,请检查系统偏好设置 > 用户与群组 > {用户} > 登录项。如果 Stretchly 勾选了隐藏,取消勾选即可解决该问题。

窗口

人类与工具

音效鸣谢

本应用程序中使用的声音列表请见 这里。

字体鸣谢

此应用使用根据 Apache 许可证,版本 2.0 授权的 Noto Sans 字体。

许可证

查看 LICENSE 文件。

本站来源与版权声明
  • 本文标题:stretchly - 休息时间提醒应用
  • 本文链接:https://cn121.com/desktop/hovancik-stretchly.html
  • 原项目:hovancik/stretchly 版权归原作者 hovancik 及贡献者所有
  • 收录信息:本站于 2026-10-06 收录本项目,本页所列协议与仓库指标均为收录当时的状态;该日期之后原项目的版本更新与协议变更,本页不作同步。
  • 开源协议:收录时本项目采用 BSD-2-Clause(查看 LICENSE 原文),本站转载其原始文档(未改动文字,仅剔除图片与无关章节);使用、修改、分发请以该仓库 LICENSE 原文为准。
  • 站点出处:本文首发于 OneTwoOne,收录自 GitHub 开源项目 hovancik/stretchly。
  • 内容说明:本页正文为原项目 README 原文(英文),本站后续会翻译为中文(当前尚未译出,仅将二级标题译为中文,便于按栏目定位;标题原文可在下方原仓库中查看),仅剔除了图片与赞助等无关章节、并把相对链接改为绝对地址;页首简介为机器翻译自仓库描述。
  • 引用声明:商业转载、第三方聚合或 AI 检索训练引用时,请务必保留以上来源出处、本文永久链接,以及原项目的版权声明与许可信息。
  • 下架通道:若原项目此后变更或收紧了许可协议、或作者/权利人认为本站的收录方式(译文、排版适配、简介翻译等)超出其授权范围,请通过 xyd3302001@163.com 发送下架通知,并附上项目地址与本页链接。本站核实后将第一时间删除本页内容,或改为不复制原文的目录性收录;署名更正等其他要求可一并提出。