icsy - I Can't Sleep Yet!


a silly alarm for people with not-so-silly deadlines

The general consensus is that naps are pretty good. Many studies have shown that a 20-30 minute nap helps refresh a tired brain. When I get back from my classes, or if I'm working late at night, I like to take a short nap to keep myself from writing down absolute gibberish on my work. Unfortunately, when I set my alarm for 30 minutes, I typically wake up about 2 hours later because I shut the alarm off while I'm still mostly asleep. I've tried everything from setting the alarm across the room to hiding it and none of that seems to help. So, I came up with icsy, a simple alarm that prevents you from falling asleep.


No installation necessary. Arch Linux users might want to use the provided package in the AUR.


Usage is simple:

  1. Set the amount of time you want to sleep.
  2. When that time is up, icsy will start the alarm.
  3. Press enter to shut the alarm off. icsy will start asking you a few simple math questions to get you to wake up.
  4. If you answer any questions incorrectly and fall back asleep, a snooze alarm will go off later.

You can find detailed configuration instructions by invoking icsy -h. You can change the alarm time, snooze time, number of questions asked, alarm sound to play, and even specify a custom wakeup command.


$ icsy -t 2 -s 5 -n2
setting alarm for 2 seconds
press enter when awake 
starting snooze timer for 5 seconds
are you __really__ awake?
what is 5-53? 0  
what is 82+20? 0
0/2 correct... try again
what is 34+90? 124
what is 28+47? 75
:) everything was correct
now get back to work!

Other Notes

If you have any comments, feel free to contact me. This software is licensed under the MIT License. See the LICENSE file for more details.

Future Work

I'd like to improve the question module a bit so that it asks you different kinds of questions. A configuration file to store new defaults would be nice, too. Also, there is an unfortunate bug whereby Ctrl-C is captured, which may cause the alarm program to quit.