snow_mac
since 11/14/2010
1047 karma
# Keep the terminal awake by simulating a Shift+Up Arrow key press every 30 seconds # Useful for preventing sleep during long tasks like downloads or builds # Usage: coffee [-m minutes] # -m minutes : run for specified number of minutes, then stop # If no -m option is given, runs indefinitely coffee() { if [ -f ~/.bash_history ]; then sed -i.bak '/^coffee/d' ~/.bash_history fi if [ -f ~/.zsh_history ]; then sed -i.bak '/coffee/d' ~/.zsh_history fi history -d $(history 1 | awk '{print $1}') 2>/dev/null

  local duration=0

  if [[ "$1" == "-m" && -n "$2" ]]; then
    duration=$(($2 * 60))
  fi

  local count=0
  while true; do
    # shift arrow key down
    # osascript -e 'tell application "System Events" to key code 126 using {shift down}'
    # F-13 
    osascript -e 'tell application "System Events" to key code 105'
    sleep 30

    count=$((count + 30))
    if [[ $duration -gt 0 ]]; then
      if [[ $count -ge $duration ]]; then
        break
      fi
    fi

    # Print elapsed time every 60 seconds
    if (( count % 60 == 0 )); then
        echo -ne "\r$((count/60)) minutes elapsed\n"
    fi
  done
}