Wakeup

Intro

Wakeup is a script to wake someone up - an alarm clock of sorts. "Of sorts" because it is only the "alarm" part. at(1) does the "clock" bit. It's designed to be very flexible and (potentially) very annoying. If set up properly, it will wake you up no matter what - hence the name.

Requirements

Philosophy

I don't wake up easily. Rather, I do, but I'm often reluctant to do such. In order to help wake me up, I wanted a system that was more powerful than a simple alarm clock. Alarm clocks can be flaky and a simple misconfiguration can cause it to not go off at all.

This software relies on the idea of "stages". Think of this as any multi-tiered alarm clock system that people set up for themselves (one clock across the room set at a later time, etc.). Each stage represents an attempt to wake someone up, generally increasing in power as the stages increase in number. The individual stages are "enter"ed after a certain amount of time. It will continue until the system is told that the user is awake.

When a stage is "enter"ed, some commands can be run. This could be something that turns on some speakers, starts some music, or anything that could potentially wake someone up. After a specified amount of time, an "alarm" command will be run for a given stage. That could be something like increasing the volume or turning on a light.

As each stage is "enter"ed, the previous stage is "exit"ed. Any cleanup can go there.

Using wakeup

There are a number of scripts which make up the system. The main one is wakeup which calls a number of scripts that are in your stages directory. These are very similar to init.d scripts, except instead of "start" and "stop" they have "enter", "alarm", and "exit".

wakeup
the main script
wakeuprc.xml
The main user configuration file. See wakeuprc.html for configuration information.
awake
a sample "awake" script that user a temporary file in /var/tmp. The accompanying stage script (awakevar) checks for the file and deems the user awake if it's set.
alarmclock
A simple script to set an alarm for a given time. This use at(1)

Installation

Simply run make install as root and it will install globally. This will defaultly install the various scripts to /usr/local/bin/.

You then need to look at the stages/ directory and wakeuprc.xml to make a configuration for yourself. Take a look at the sample scripts there, they are a copy of my own configuration so you can see how I use it.