compnerd/vigil
A `caffeinate` inspired power management suspension program for Windows
What does vigil do?
vigil temporarily overrides Windows power management settings to keep your computer awake. It offers three ways to prevent sleep:
vigil start— Start sleep prevention that runs until you manually stop itvigil end— Stop a running vigil sessionvigil stand— Prevent sleep while running a specific command (default command)
Installation
Build from source using Swift Package Manager:
swift build --configuration releaseThe executable will be available at .build/release/vigil.exe.
Basic Usage
Keep system awake indefinitely
# Prevent computer from sleeping due to inactivity
vigil start --idle
# Also keep the display on
vigil start --idle --display
# Stop when done
vigil endKeep system awake for a specific duration
# Prevent sleep for 2 hours (7200 seconds)
vigil start --idle --timeout 7200Run in background (daemon mode)
# Start background sleep prevention for 1 hour
vigil start --idle --timeout 3600 --daemonize
# The process will run in background, you can close the terminal
# To stop it early:
vigil endPrevent sleep while running a command
# Keep system awake while running a backup
vigil stand --idle -- robocopy C:\Important D:\Backup /MIR
# Keep display on during a video conversion
vigil stand --display -- ffmpeg -i input.mp4 output.mkvCommand Options
Sleep Prevention Modes
--idle/-i— Prevent the computer from sleeping due to inactivity--display/-d— Prevent the display from turning off--system/-s— Prevent sleep only when running on AC power (not battery)
Additional Options
--timeout <seconds>/-t— Automatically stop after specified seconds (only withstart)--daemonize/-d— Run thestartcommand in the background (requires--timeout)
Note: At least one sleep prevention mode (--idle, --system, or --display) must be specified.
Common Scenarios
Long download or upload:
vigil start --idle
# Run your download/upload
vigil endBackground download (daemon mode):
vigil start --idle --timeout 14400 --daemonize # 4 hours in background
# Close terminal, download continues
vigil end # Stop early if neededPresentation or demo:
vigil start --display --idle
# Give your presentation
vigil endOvernight batch job:
vigil stand --idle -- python my_long_script.pyVideo call or streaming:
vigil start --display --system # Only when plugged inHow It Works
vigil uses Windows power management APIs to temporarily change execution state:
- Requests that Windows keep the system and/or display active
- Automatically restores normal power settings when stopped
- Uses named events for communication between
startandendcommands
Troubleshooting
vigil end doesn't work:
- Make sure you're running as the same user who ran
vigil start - Only one
vigil startsession can run at a time
Computer still goes to sleep:
- Check if other power policies (group policy, manufacturer tools) are overriding settings
- Try combining
--idleand--displayflags - Verify you're using the correct flags for your scenario
--system flag has no effect:
- This flag only prevents sleep when on AC power
- Check your power status in Windows settings
--daemonize requires timeout:
- Background execution needs a timeout to prevent runaway processes
- Use
--timeoutwith--daemonize
Package Metadata
Repository: compnerd/vigil
Stars: 7
Forks: 0
Open issues: 0
Default branch: main
Primary language: swift
License: BSD-3-Clause
README: README.md