一个智能的安全工具,当您离开时,若有活动则自动拍照并锁屏。
SnapLock 是一款智能安全工具,当您离开电脑时,若检测到活动,它会自动拍照并锁定屏幕。该工具采用现代化技术栈构建,前端使用 Vue 3,后端采用 Rust 与 Tauri,为物理计算机安全提供了轻量高效的解决方案。
SnapLock 解决了一个常见的安全问题:当您需要短暂离开电脑,但又不想使用系统锁屏,同时又担心有人趁您不在时访问您的电脑,这时该怎么办?该应用程序通过在后台静默运行来解决这一问题,并能立即响应任何键盘或鼠标活动,采取两项安全措施:通过您选定的摄像头拍照并锁定计算机屏幕。
该应用程序利用 Rust 的性能和 Tauri 的轻量架构确保对系统资源的影响最小化,同时提供强大的安全监控功能。
SnapLock 提供多项核心功能,使其既强大又用户友好:
- 智能监控:经过 2 秒的准备期后,SnapLock 进入主动监控模式,随时准备检测任何输入活动。
- 活动触发响应:任何键盘或鼠标事件都会立即触发安全响应,确保未经授权的访问不会被忽视。
- 即时拍照:在锁定屏幕前,SnapLock 通过您选定的摄像头拍摄照片,为事件创建视觉记录。
- 多种触发后动作:支持三种模式 - 拍摄并锁屏、仅拍摄、屏幕录制,满足不同场景需求。
- 全局热键:在系统任何位置使用 Alt+L(可自定义)快速启动或停止监控。
- 系统托盘操作:应用程序在后台运行,并显示系统托盘图标,允许隐藏主界面而不影响您的工作流程。
- 高度可配置:可选择多个摄像头,并为拍摄的照片设置自定义保存路径。
- 会话状态监控:智能检测 Windows 系统锁定/解锁状态,在系统解锁时自动重置应用状态。
- 屏幕录制功能:使用 FFmpeg 进行高质量屏幕录制,支持自动进程管理和 Job Object 技术。
- 暗色模式:支持明暗主题切换,提供舒适的视觉体验。
- 系统通知:可选的系统通知功能,在关键事件发生时及时提醒用户。
- 调试日志系统:完整的日志记录功能,支持实时显示和文件保存,便于问题诊断。
- 轻量高效:基于 Rust 和 Tauri 构建,确保资源使用最少,同时保持高性能。
SnapLock 通过简化的工作流程运行,旨在以最少的用户努力实现最大安全性:
-
配置阶段:
- 用户在主界面的下拉列表中选择首选摄像头。
- 可选择设置自定义文件夹保存拍摄的照片(默认为桌面)。
- 配置触发后动作:拍摄并锁屏、仅拍摄、或屏幕录制。
- 设置其他选项:暗色模式、系统通知、调试日志等。
-
准备阶段:
- 用户按下全局热键 Alt+L(可自定义)或点击"开始监控"按钮。
- 应用程序状态变为"准备中",提供 2 秒缓冲时间以防止意外触发。
-
主动监控阶段:
- 准备期结束后,SnapLock 进入"活跃"状态,主窗口自动隐藏。
- 应用程序静默监控所有系统范围的键盘和鼠标输入事件。
- 会话监控器检测系统锁定/解锁状态。
-
触发与行动阶段:
- 检测到任何键盘或鼠标活动时:
- 拍照:立即通过选定的摄像头拍摄照片并保存到指定路径。
- 执行选定动作:
- 拍摄并锁屏:锁定计算机屏幕
- 仅拍摄:仅保存照片,不锁定屏幕
- 屏幕录制:开始录制屏幕活动,直到用户停止
- 系统通知:如果启用,显示相关通知
- 状态重置:系统解锁时自动重置应用状态
SnapLock 采用现代化混合架构构建,结合了 Web 技术的用户界面优势和系统编程的性能优势:
用户界面使用 Vue 3 和 TypeScript 构建,提供响应式且直观的体验。前端负责:
- 用户交互和配置管理
- 显示应用程序状态和摄像头预览
- 处理设置和偏好
- 为所有操作提供视觉反馈 前端通过 Tauri 的调用系统与后端通信,实现 Web 界面与原生功能的无缝集成。
后端使用 Rust 构建,并采用 Tauri 框架创建轻量、安全且高性能的原生应用程序。Rust 后端处理:
- 输入监控:使用 rdev crate 进行系统级键盘和鼠标事件监控
- 摄像头控制:通过 nokhwa crate 实现摄像头选择、预览和拍照功能
- 屏幕录制:集成 FFmpeg 进行高质量屏幕录制,支持 Job Object 进程管理
- 会话监控:检测 Windows 系统锁定/解锁状态,智能状态管理
- 系统操作:屏幕锁定、通知显示、系统托盘集成
- 配置管理:JSON 配置文件持久化,支持多种用户设置
- 全局热键:使用 tauri-plugin-global-shortcut 实现系统级快捷键
- 状态管理:基于状态机的应用状态管理,确保状态转换的正确性
- 日志系统:完整的日志记录和调试功能,支持文件保存和实时显示
- 主题支持:暗色模式支持,提供舒适的视觉体验
SnapLock 设计为即装即用,设置简单:
- 安装:从 GitHub Releases 页面下载最新安装程序。
- 配置:
- 启动 SnapLock 并从下拉列表中选择首选摄像头
- 选择触发后动作:拍摄并锁屏、仅拍摄、或屏幕录制
- 设置照片和日志保存路径
- 配置其他选项:暗色模式、系统通知、调试日志等
- 使用:
- 当您需要离开电脑时,按下全局热键(默认:Alt+L)
- 应用程序提供 2 秒准备时间,然后进入主动监控模式
- 如果有人在您离开时尝试使用您的电脑,SnapLock 会根据设置执行相应动作
- 系统解锁时应用状态会自动重置,无需手动干预
SnapLock 将安全性作为首要考虑因素:
- 本地运行:所有处理都在您的本地机器上完成 - 不会向外部服务器发送任何数据。
- 最小权限:应用程序仅请求摄像头访问和系统监控的必要权限。
- 透明操作:用户可以通过状态指示器和系统托盘图标完全了解监控何时处于活动状态。
SnapLock 代表了一种深思熟虑的物理计算机安全方法,在强大保护与用户便利性和系统效率之间取得了平衡。
我们欢迎任何形式的贡献!
# 1. 克隆仓库
git clone https://github.com/OldSuns/snaplock.git
cd snaplock
# 2. 安装前端依赖
pnpm install
# 3. 启动开发服务器
pnpm tauri dev# 1. 安装依赖
pnpm install
# 2. 检查 Rust 后端
cargo check --manifest-path src-tauri/Cargo.toml
# 3. 构建前端静态资源
pnpm build
# 4. 生成正式安装包和目录版
pnpm tauri build当前仓库的 Tauri bundle target 为 nsis 和 app,默认产物位置为:
src-tauri/target/release/bundle/nsis/src-tauri/target/release/bundle/app/
如果您有任何建议或发现 Bug,请随时提交 Issues 或 Pull Requests。
本项目基于 MIT License 开源。