
ScreenGuard:面向 Linux 的开源数字健康与应用限制工具
来源标题:Show HN: ScreenGuard – Open-source digital wellbeing and app limits for Linux
ScreenGuard 是一款用 Flutter 开发的开源 Linux 桌面应用,提供屏幕时间统计、每日应用限额锁定和专注模式番茄钟屏蔽功能,支持 Wayland 与 X11。其仪表盘可查看今日、近 30 天累计及日均使用时长,并以周柱状图和环形图展示应用使用占比。X11 的窗口追踪与最小化功能目前处于社区测试阶段。
以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。
面向 Wayland 和 X11 的现代屏幕时间追踪、每日应用限额与专注模式。
ScreenGuard 是一款用 Flutter 构建、面向 Linux 的开源、隐私优先的桌面应用。它把 Android 风格的主动式 Digital Wellbeing、每日应用限额锁定和专注模式番茄钟会话屏蔽直接带到 Linux 桌面。
桌面环境与显示服务器支持
X11 测试须知:X11 窗口跟踪和活动窗口最小化目前正处于社区积极测试阶段。在提交与 X11 相关的 issue 或 bug 报告时,请附上截图或视频证据,并注明你的桌面环境名称与版本,以便问题能够被快速复现和解决。
本着开源透明和清晰归因的精神,以下是 ScreenGuard 开发过程中 AI 工具使用情况的准确说明:
- Digital Wellbeing 仪表盘
核心概览卡片:即时查看今日活跃屏幕时间,以及过去 30 天的累计总时长和日均值。
交互式每周柱状图:可视化一周中每一天的屏幕时间,并配有通俗易懂的提示信息(45m、1h 27m)。
应用占比环形图:按比例展示应用使用情况,并配有颜色编码图例。
单日应用明细:按使用时长排序展示每个被跟踪的应用,并配有自定义进度条。
多周历史:逐周向前/向后滑动(< / >)查看此前各周的数据。
交互式单日检查器:点击图表中的任意柱子,即可加载该特定日期的应用明细(例如“最常用应用(8 月 12 日,星期三)”)。
自定义与预设配额:使用预设按钮(30m、1h、2h、4h)为每个应用设置每日限额,或输入自定义分钟数。
90% 警告阈值:当使用量达到应用限额的 90% 时,桌面通知会发出提醒。
100% 时间到锁定屏幕:当达到每日限额时,ScreenGuard 会最小化当前活动窗口,并触发专用的锁定覆盖屏幕,提供以下选项:
增加 15 分钟(临时延长)
编辑限额
返回仪表盘
动画番茄钟计时器:预设会话(15m、25m、45m、60m),配有实时圆形倒计时环。
番茄钟周期与休息:配置专注/休息周期;计时器会在专注时段和休息时段之间自动切换。
干扰屏蔽:从可搜索的应用选择器(支持网格或列表布局)中选择分散注意力的应用。在专注会话进行期间,如果被屏蔽的应用被打开,ScreenGuard 会自动将其最小化。
严格自动关闭(可选):可选择在专注会话期间打开被屏蔽应用时直接关闭它们,而不是最小化。
专注统计:按天追踪已完成的专注会话。
带应用选择器的专注模式。窗口透明度由 Blur My Shell 实现。
通用:主题模式、桌面通知、音效、自定义音频和提醒事件。
限额与番茄钟:番茄钟周期、休息时长、严格自动关闭和已屏蔽应用的处理方式。
诊断:守护进程状态和可选择退出的匿名诊断。
更新:稳定版/测试版通道、检查频率和应用内更新状态。
数据:本地数据库大小/会话数、按日期范围删除、按特定日期删除以及全部清除。
下方截图中的窗口透明度由 GNOME 扩展 Blur My Shell 实现,而非 ScreenGuard。
设置 → 通用。窗口透明度由 Blur My Shell 实现。
设置 → 限额与番茄钟。窗口透明度由 Blur My Shell 实现。
设置 → 诊断。窗口透明度由 Blur My Shell 实现。
设置 → 更新。窗口透明度由 Blur My Shell 实现。
设置 → 数据。窗口透明度由 Blur My Shell 实现。
会话日志以 WAL 日志模式本地存储在 SQLite(~/.local/share/screenguard/usage.db)中。
你的屏幕时间数据永远不会离开你的电脑。没有云账户,也没有第三方跟踪。
匿名诊断默认可选择退出:崩溃追踪和每日一次的活跃安装 ping(随机安装 ID、版本、仅发行版/桌面环境信息)。可在 设置 → 诊断 → 发送匿名诊断 中禁用。
架构
graph TD A[ScreenGuard Flutter GUI] -->|SQLite WAL| DB[(usage.db)] B[screenguard-daemon] -->|SQLite WAL| DB B -->|轮询活动窗口| C{显示服务器} C -->|Wayland GNOME| D[GNOME Shell 扩展 D-Bus] C -->|X11 桌面| E[X11 EWMH xprop / xdotool] B -->|执行限额与专注| F[桌面通知 / 最小化窗口] Loading GUI 应用:使用 Flutter 与 Material 3 构建。
守护进程(screenguard-daemon):轻量级后台服务,编译为单一原生二进制文件。目前用 Dart 编写;v1.5 路线图目标是用 C 移植并保持行为一致,使用相同的 SQLite schema 和控制接口。
扩展(screenguard@screenguard.app):原生 GNOME Shell 扩展,通过 D-Bus(org.gnome.Shell.Extensions.ScreenGuard)导出活动窗口标题/类名。
X11 后端:通过 xprop 执行标准 EWMH _NET_ACTIVE_WINDOW 查询,并通过 xdotool 最小化窗口。
安装
在下方选择你的 Linux 发行版。只需将命令复制粘贴到终端即可。
选项 A — APT 仓库(推荐,可接收更新):
sudo wget -O /usr/share/keyrings/screenguard.asc https://adityakrishnan005-a11y.github.io/ScreenGuard/apt/key.asc echo "deb [signed-by=/usr/share/keyrings/screenguard.asc] https://adityakrishnan005-a11y.github.io/ScreenGuard/apt apt main" | sudo tee /etc/apt/sources.list.d/screenguard.list sudo apt update && sudo apt install screenguard
选项 B — 独立 .deb:
wget https://github.com/adityakrishnan005-a11y/ScreenGuard/releases/download/v0.1.1/screenguard_0.1.1_amd64.deb && sudo apt install ./screenguard_0.1.1_amd64.deb -y
Fedora / RHEL / Rocky Linux(Copr)
sudo dnf copr enable the-amibivert/screenguard sudo dnf install screenguard
Arch Linux / Manjaro(自定义仓库)
AUR 包即将推出(AUR 账户注册暂时中止)。在此之前,请使用我们签名的自定义仓库:
1. 导入并在本地信任签名密钥
curl -fsSL https://adityakrishnan005-a11y.github.io/ScreenGuard/arch/key.asc -o /tmp/screenguard.asc sudo pacman-key --add /tmp/screenguard.asc
(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)
正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。