Skip to content

compnerd/vigil

Repository files navigation

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.

Note: Running vigil without arguments defaults to the stand command, which requires a command to execute.

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 it
  • vigil end — Stop a running vigil session
  • vigil stand — Prevent sleep while running a specific command (default command)

Installation

Build from source using Swift Package Manager:

swift build --configuration release

The 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 end

Keep system awake for a specific duration

# Prevent sleep for 2 hours (7200 seconds)
vigil start --idle --timeout 7200

Run 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 end

Prevent 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.mkv

Command 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 with start)
  • --daemonize / -d — Run the start command 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 end

Background download (daemon mode):

vigil start --idle --timeout 14400 --daemonize  # 4 hours in background
# Close terminal, download continues
vigil end  # Stop early if needed

Presentation or demo:

vigil start --display --idle
# Give your presentation
vigil end

Overnight batch job:

vigil stand --idle -- python my_long_script.py

Video call or streaming:

vigil start --display --system  # Only when plugged in

How 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 start and end commands

Troubleshooting

vigil end doesn't work:

  • Make sure you're running as the same user who ran vigil start
  • Only one vigil start session can run at a time

Computer still goes to sleep:

  • Check if other power policies (group policy, manufacturer tools) are overriding settings
  • Try combining --idle and --display flags
  • 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 --timeout with --daemonize

About

A `caffeinate` inspired power management suspension program for Windows

Resources

License

Stars

Watchers

Forks

Languages