I've been looking for a while for a good, easy to use, easy to install,
no fuss alarm clock. Just something I can set to go off in 10 minutes.
Or at 2 o'clock. Or tomorrow. I haven't found any apps that did that in
a nice and easy fashion. I have found several that would do lots of
things, but none of them were easy to use and handle - almost all of
them were bloated, with bad UI. So, once more, I googled, but this time
I came across another solution. 'Look ye to the command line!' I read.
'Use the at command, Luke!' And so I issued a 'man at' and quickly came
upon good stuff.
From the man page of at:
DESCRIPTION
at and batch read commands from standard input or a specified
file which are to be executed at a later time, using /bin/sh.
Which, in my ears, sound awesome! You see, what you get here is close to
the power of crontab, but single-use, i.e. you setup a command to run
once, at a given time, and that's it. In other words, a command that
will let you set up alarms easily.
The next step was turning at into an actual alarm. I prefer the sound
method: play something that sounds like an actual alarm, and you'll be
sure you don't overlook the thing. You can combine with something visual
too, of course, like a dialog box. For the sound, I found AUTHENTIC
NAVY ALARM SOUNDS PAGE
which hosts a few different wave files. In particular, the general alarm
(old style) works well for me. To play it, all you need to do is
Combined with at, this then becomes
echo "aplay -q sound.file" | at [time]
One of the beauties of at is that it will accept lots of different time
inputs. So, you can do 'at 7:40', 'at 3pm', 'at now + 5 minutes', 'at
today + 5 days', etc.
With things put together into a script, it might look like
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 | #!/bin/bash
if [ "$1" = '' ]
then
echo "No argument for for alarm! Supply with time
example:
alarm 7:45
alarm 19:59
alarm 3pm + 3 day
alarm 2010-09-18
"
exit 1
else
if `echo aplay -q /home/fake51/Downloads/gqold.wav | at $1 2>\&1 > /dev/null`
then
exit 0
else
echo "Setting alarm failed"
exit 1
fi
fi
|
Save the above script as alarm in \~/bin/, chmod to 0755 and you can
then set alarms like
alarm 11:40
alarm "2010-01-06 12:00"
alarm "now + 5 minutes"
Should you want to remove the alarms before they run, you can see
commands set to run with atq and remove them with atrm [number]