← Back to Skills
Productivity

caffeine

bunsdev By bunsdev 👁 18 views ▲ 0 votes

Prevent the computer screen and system from falling asleep on macOS

GitHub
---
name: caffeine
description: Prevent the computer screen and system from falling asleep on macOS or Windows. Use when the user wants to keep their display awake, disable sleep, or run a long task without interruption.
---

# Caffeine

Keeps your computer awake by preventing display and system sleep.

## Quick Start

### macOS

```bash
caffeinate -d
```

### Windows (PowerShell)

```powershell
# Keep display awake until Ctrl+C
while ($true) {
  $wsh = New-Object -ComObject WScript.Shell
  $wsh.SendKeys('{SCROLLLOCK}{SCROLLLOCK}')
  Start-Sleep -Seconds 60
}
```

---

## macOS

Uses the built-in `caffeinate` command (no installation needed).

### Options

| Command | Effect |
|---------|--------|
| `caffeinate` | Prevent sleep until terminated |
| `caffeinate -d` | Prevent **display** from sleeping |
| `caffeinate -i` | Prevent **idle** sleep |
| `caffeinate -s` | Prevent **system** sleep (AC power only) |
| `caffeinate -t 3600` | Prevent sleep for 1 hour (seconds) |
| `caffeinate -d -t 1800` | Keep display on for 30 minutes |

### Examples

Keep display on for 2 hours:

```bash
caffeinate -d -t 7200
```

Keep awake while a command runs:

```bash
caffeinate -i -- long-running-command
```

Run in background:

```bash
caffeinate -d &
# To stop later:
pkill caffeinate
```

Check if running:

```bash
pgrep -l caffeinate
```

---

## Windows

### Option 1: PowerShell (no install)

Prevent sleep by simulating activity (Ctrl+C to stop):

```powershell
while ($true) {
  $wsh = New-Object -ComObject WScript.Shell
  $wsh.SendKeys('{SCROLLLOCK}{SCROLLLOCK}')
  Start-Sleep -Seconds 60
}
```

### Option 2: powercfg (change power settings)

Disable sleep temporarily:

```powershell
# Disable sleep on AC power
powercfg /change standby-timeout-ac 0
powercfg /change monitor-timeout-ac 0

# Re-enable later (e.g., 30 minutes)
powercfg /change standby-timeout-ac 30
powercfg /change monitor-timeout-ac 15
```

### Option 3: Presentation mode

```powershell
# Enable presentation mode (disables sleep + notifications)
presentationsettings /start

# Disable when done
presentationsettings /stop
```

### Option 4: One-liner with .NET

```powershell
# Prevent sleep for duration of script
Add-Type -AssemblyName System.Windows.Forms
while ($true) {
  [System.Windows.Forms.Cursor]::Position = [System.Windows.Forms.Cursor]::Position
  Start-Sleep -Seconds 60
}
```

---

## Notes

- **macOS**: `caffeinate` is built-in; process must stay running
- **Windows**: PowerShell methods simulate activity; `powercfg` changes system settings
- Press **Ctrl+C** to stop any running script
productivity

Comments

Sign in to leave a comment

Loading comments...