Yawn: a wacky todo-list manager for Linux


Overview

Yawn is a command-line based to-do list manager for Linux. It uses human-readable and human-editable TODO files in a straightforward plaintext format, and comes with an integrated filtering language which lets you perform both simple and complex queries on your TODO files.

Snore is Yawn's simple filtering language, which is concise yet expressive, and is based on a recursive tree-walk of the hierarchical TODO file. It is designed to be as concise as possible; so it has the readability of a complex Perl regular expression. That is to say, those who have learned it will swear by it, and those who are learning it will swear at it.

Feature Summary

Yes, I know. There are at least a dozen other todo list manager programs out there. And I recognize that Yawn is not for everybody. It only fits a certain mindset. So, I will list Yawn's distinguishing features up front to help you decide if this is for you, or if you want to look elsewhere.

News & Announcements

Yawn version 1.0 has been released! Get it now before you fall asleep. And please, no snoring in public. Not everyone can filter out the noise.

Why such wacky names as Yawn and Snore?

The reason for these whimsical names is an unfortunate historical accident.

The original name of this program was 2do (pronounced “to-do”, obviously), and its filtering language was named SFL (Simple Filtering Language). Unfortunately, during the lapse of time between my stumbling across this nice name and when the program is actually ready to be published to the world, somebody else happened to pick the same name, 2do, for another, web-based, todo list manager.

Obviously, one of us has to go, since both programs are too close in functionality and so exist in the same practical namespace. I didn't want to pick a fight with Bart, since he clearly picked the same name only by chance (nobody else in the world knew of my 2do yet). I also didn't want to be associated with PHP for entirely irrational reasons (although, ironically enough, this page is actually being served by PHP right now). Therefore, in response, I decided to change the name of my 2do to Yawn: i. e., when I am bored, it reminds me of what else I haven't done yet.

This Great Renaming took place on the 29th of July, 2004, five years after the initial concept of the program was laid down. And while I was at it, I decided that the name SFL was not unique enough (the same cause that cost me the neat name 2do); so I decided to also change it to Snore, in correspondence with Yawn's new name. This Lesser Renaming took place on the same day as the Great Renaming.

System Requirements

Yawn is a standalone program that runs on any Linux system. It can probably be compiled for any other Unix system if you care to. It doesn't require anything else except the standard system libraries (libc6, etc.), unless you want to compile the source yourself.

The requirements for compiling Yawn are:

Download

Latest stable release of Yawn: yawn-1.0.tar.gz

Current version of the prog/lib libraries: proglib-0.2.tar.gz

Build instructions

Assuming you unpacked the prog/lib tarball and the Yawn tarball in the same directory, there should be a directory called proglib and another directory called yawn. Then all you need to do is:

  1. cd proglib

  2. cons .

  3. cd ../yawn

  4. cons . PROGLIB=../proglib

See the INSTALL file for more details.

Installation instructions

  1. Copy the executable yawn to any directory in your PATH, and make sure it has the right executable permissions.

  2. Copy yawn.cfg to /etc

  3. Users may create .yawnrc in their home directory and put any overriding settings there, such as specifying the default place to look for a TODO file. (Or, if your computer is essentially a single-user system, you can just copy yawn.cfg to ~/.yawnrc without installing it in /etc, if that suits you better.)

  4. Copy the manpages doc/yawn.1 and doc/snore.7 to your preferred manpage directories, usually /usr/share/man/man1 and /usr/share/man/man7 respectively.

Documentation

Yawn usage summary

Here are some common ways to invoke Yawn.

yawn -h to get usage summary.

yawn to see what else you haven't done. By default, this displays the first 5 of all undone entries together with any annotations attached to them. If you have specified another default filter in your configuration file, Yawn will use that instead.

yawn /usr/src/myproject show what still needs to be done in MyProject. (Reads /usr/src/myproject/TODO.)

yawn -r use root TODO file.

yawn -e edit TODO file.

yawn -n10 display the first 10 entries selected by default filter.

yawn -d display done entries.

yawn -a override default filter.

yawn -au show all undone entries.

yawn -f'...' append Snore filter snippet to default filter. (It's a good idea to protect the Snore snippet with quotes to prevent the shell from mangling or misinterpreting it.)

yawn -af'...' override default filter with Snore snippet.

Exhaustive Yawn documentation

Exhaustive Yawn documentation is available in Yawn's manual page, which comes with the Yawn tarball. The manual page can be found in the doc subdirectory. A web-browsable version will be available soon.

Snore documentation

The Snore documentation is also available in the Yawn tarball in the doc subdirectory. A web-browsable version will be available soon.


Last updated 11 Jul 2006.

Powered by Apache Runs on Debian GNU/Linux Viewable on any browser Valid CSS Valid XHTML 1.1! Proud to be Microsoft-free