compnerd/vigil
A Windows command-line tool that prevents your computer from going to sleep or turning off the display. Perfect for long-running tasks, presentations, or keeping your system active.
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
Default branch: main
README: README.md