From 59a4f4f8b40d8edc37f077586787f3268542aa03 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Fri, 3 Jul 2015 09:50:06 +0100 Subject: fill out README --- README.md | 84 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 79 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fcb5136..6f3154c 100644 --- a/README.md +++ b/README.md @@ -2,16 +2,71 @@ ## Introduction -TODO +srem is a program for GNU/Linux and Microsoft Windows systems to +quickly set and receive pop-up reminders at times you'd like them. + +I've found that often when I get engrossed in something while sitting +at my computer, I lose track of the time and this has led to burnt +food, cold cups of tea, clean laundry sitting in the machine for hours +and being late to catch the bus to meet friends. srem ("Sean's +reminders") is a program that allows you to effortlessly request +reminders to go do things in the real world, like this: + + $ srem 20m Check on food in oven + $ srem 3:40pm Go out to get the bus in 5 minutes + +After typing one of these commands you'll get a pop-up reminder at the +right time. It's much more convenient to just type `srem 20m Take +laundry out` into a shell, than it is to find your phone, figure out +what time it will be in 20 minutes, set an alarm to go off at that +time, make sure your phone is not silenced, et cetera. With srem you +can just quickly set the reminder and then allow yourself to get +engrossed in whatever you're doing on your computer. + +### Other features + +If you use [Org-mode for GNU Emacs](http://orgmode.org/) to manage +your scheduled appointments, srem can pull appointments from your Org +agenda and show you reminders for those at the time of appointment and +at (soon to be configurable) intervals before. + +### Other usage ideas + +- Implement the pomodoro technique: type `srem 25m time for a short + break` +- Use your computer more mindfully by making a decision how long + you're going to spend on a task: something like `srem 40m spend ten + minutes away from the screen now` ## Usage ### Setting reminders -TODO + srem 10m do X # reminder 10 minutes from now + srem 10 do X # also 10 minutes from now + srem 1h5m do Y # reminder 65 minutes from now + srem 4:30am do Z # reminder at 4:30am tomorrow morning (probably) + +You can't set a reminder more than 24 hours into the future; don't try +things like `srem 26h do something`. This restriction keeps the usage +of srem simple and quick. Use an appointment in your Emacs agenda instead. ### Receiving reminders +#### On GNU/Linux with cron + +In my crontab I have + + PATH=/home/swhitton/.local/bin:[...] + + * * * * * srem --cron + 0 */2 * * * srem --refresh-emacs + +This has srem checking if there's a reminder it needs to pop-up every +minute, and refreshing its cache of my Org-mode agenda every two +hours (this requires spawning a new Emacs instance so is a bit heavy +to be running every minute). + #### On Microsoft Windows This command should set the scheduled tasks: @@ -24,13 +79,32 @@ every time the commands are run, open the scheduled tasks manager, find the srem tasks and open their properties, and select "Run whether user is logged on or not". +## Installation + +I'm currently working to make srem configurable: right now it's set up +the way I like it, but I'd like to make it so that you can change its +settings without knowing how to compile Haskell programs. I'll +provide binaries at that point. Until then, you'll need to build srem +yourself; see below. + ## Building -TODO +I recommend [stack](https://github.com/commercialhaskell/stack): -## Installation + $ git clone https://github.com/spwhitton/srem.git + $ cd srem + $ stack build + $ stack install + +If you've `$HOME/.local/bin` in your PATH environment variable (which +you should if you're using stack), you should now be able to just run +srem from any shell/command prompt. + +## Enhancements -TODO +I'd like to hook srem up to a mobile notifications service. If it +detects the computer user is idle, it might send your reminder to your +phone. ## License -- cgit v1.2.3