Skip to content

ohnow/stay-awake

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Stay Awake 🖱️

一个智能的鼠标自动移动工具,能够防止系统进入休眠状态,并支持灵活的工作时间配置。

功能特性

核心功能:

  • 🖱️ 自动鼠标移动 - 防止系统休眠和屏幕锁定
  • 🎯 智能活动检测 - 检测用户实际活动,避免在有人操作时移动鼠标
  • ⏰ 时间段控制 - 仅在指定的工作时间内运行
  • 🔄 可配置间隔 - 灵活调整鼠标移动的频率
  • 📊 详细日志 - 实时监控运行状态

安装

前置要求

  • Node.js (v14 或更高版本)
  • npm

安装步骤

# 1. 克隆或下载项目
cd stay-awake

# 2. 安装依赖
npm install

快速开始

1. 配置环境变量

在项目根目录创建或编辑 .env 文件:

# 鼠标移动间隔(秒)
INTERVAL=60

# 工作时间规则(可选,默认全天)
TIME_RULES=W1-W5/9-18;W6-W7/0-24

# 日志级别(可选:trace, debug, info, warn, error)
LOG_LEVEL=info

2. 启动应用

npm start

你将看到类似的输出:

═══════════════════════════════════════════════════════
📋 当前环境配置参数:
─────────────────────────────────────────────────────
INTERVAL: 60 # 移动间隔(秒)
─────────────────────────────────────────────────────
💡 维护位置: .env 文件
═══════════════════════════════════════════════════════

🚀 鼠标移动脚本启动 (智能模式)
📍 移动间隔: 60秒
♾️  运行模式: 无限期运行(按 Ctrl+C 停止)

3. 停止应用

按下 Ctrl+C 即可停止运行。

配置说明

INTERVAL(移动间隔)

指定鼠标多久自动移动一次(单位:秒)

INTERVAL=60      # 每60秒移动一次鼠标

推荐值:

  • 60 - 大多数场景的默认值
  • 30 - 对系统休眠更敏感
  • 120 - 更少的鼠标移动

TIME_RULES(工作时间规则)

控制脚本仅在指定的工作时间内运行。格式如下:

W1-W5/9-18;W6-W7/0-24

格式说明:

  • W1 = 周一(工作日)
  • W7 = 周日(周末)
  • 9-18 = 上午9点到晚上18点(24小时制)
  • ; = 多个规则的分隔符

示例:

规则 说明
W1-W5/9-18 周一至周五,上午9点到晚上6点
W1-W5/8-17;W6-W7/10-20 周一至周五8-17点,周末10-20点
W1-W7/0-24 全天候运行(全周)
W1-W3/9-12;W3-W5/14-18 周一至周三9-12点,周三至周五14-18点

LOG_LEVEL(日志级别)

控制日志输出的详细程度:

LOG_LEVEL=info        # 默认,显示重要信息
LOG_LEVEL=debug       # 显示调试信息
LOG_LEVEL=trace       # 显示所有详细信息

工作原理

活动检测

脚本持续监听以下事件:

  • 🖱️ 鼠标移动
  • ⌨️ 键盘输入
  • 💬 系统事件

当检测到用户活动时,鼠标不会移动。

鼠标移动

  • 移动距离: 10 - 50 像素(随机)
  • 移动方向: 随机方向(360°)
  • 移动速度: 平滑线性移动(500ms内完成)
  • 边界检查: 自动限制在屏幕范围内

时间规则

  • 在允许的工作时间内,脚本正常工作
  • 在非工作时间,鼠标停止移动
  • 支持复杂的时间段组合

常见问题

Q: 脚本会不会干扰我的正常工作?

A: 不会。脚本智能检测用户活动:

  • 如果你在操作鼠标或键盘,脚本会停止移动
  • 只有在系统空闲时,鼠标才会自动移动

Q: 可以在远程连接时使用吗?

A: 可以,但效果取决于远程连接工具的支持情况。建议在本地运行以获得最佳效果。

Q: 如何修改鼠标移动的距离?

A: 在 src/index.js 中修改以下常量:

const DISTANCE_MIN = 10;   // 最小距离(像素)
const DISTANCE_MAX = 50;   // 最大距离(像素)

Q: 脚本会消耗很多系统资源吗?

A: 不会。脚本轻量级,只在检查间隔(1秒)时进行活动检测,对系统影响微小。

Q: 如何在后台运行脚本?

macOS/Linux:

nohup npm start > stay-awake.log 2>&1 &

Windows 命令提示符:

start npm start

文件结构

stay-awake/
├── src/
│   ├── index.js              # 主程序入口
│   ├── activityDetector.js   # 活动检测模块
│   ├── mouseMovement.js      # 鼠标移动模块
│   ├── timeRules.js          # 时间规则解析模块
│   ├── workRulesPrinter.js   # 规则显示模块
│   └── utils/
│       ├── common.js         # 通用工具函数
│       ├── env.js            # 环境变量初始化
│       └── logger.js         # 日志模块
├── .env                      # 环境变量配置
├── package.json              # 项目配置
└── README.md                 # 本文件

依赖库

  • robotjs - 跨平台的鼠标和键盘自动化
  • dotenv - 环境变量管理

许可证

MIT

支持

如有问题或建议,欢迎提出 Issue 或 Pull Request。


最后更新: 2025年12月29日

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published