Atea is a minimalistic text file based menu bar time tracker for MacOS (get it here).
There are a lot of great task managers out there - Fogbugz, Pivotal, Lighthouse and Trello among others. So why yet another?
If you are like me and find yourself in a situation where you want to quickly write down a task, bug or an idea you just thought of, more often than not you end up opening up your favorite text editor and saving a TODO.txt
somewhere. At first it contains 3 or 4 entries; then it starts to grow - and you have to invent a custom DSL just so you can track priorities, projects or time.
Even though a text file based system doesn't scale well (or at all) beyond a single person, it has one unbeatable advantage over web-interface based task management tools - locally editing and reordering tasks is much easier and faster, especially with editors like vim or Emacs.
Entering a new task in Atea is just as easy as entering a new line in a text file and saving:
Add more tasks:
Now comes the interesting part; prioritizing something is just an empty line away:
But what if the need arises to subdivide tasks into projects (or modules)? Just add an optional [Project]
in front of a task; no qualifier stands for [Default]
:
Done with something? Just delete it:
Completing all tasks of a given priority has the beneficial side-effect of pushing up all other tasks.
Lines starting with a whitespace character are ignored; this allows for easy "note taking":
Tracking time allows you to bill your clients more accurately, improve resource allocation by comparing estimates with actual times spent or just get a clear picture of what you have been doing the last couple of months.
To start working on a task, just click it:
When you are done, stop working:
If you want you can append an optional estimate to any given task:
Make something to eat - 5m
Minutes (m
), hours (h
) and days (d
) are supported.
Times and estimates are saved in a separate csv file in plain text; this allows for easy data analysis by combining common Unix tools like awk or sed.
Atea automatically creates an ~/.atea
file in the user home folder with the following contents:
{
:file "/Users/.../tasks.txt"
}
This is where the current task file resides; you can change it to whatever you desire. Tracked times are stored in a file named ...-times.csv
, depending on the main tasks file name.
Since tasks are stored in simple text files, Dropbox can be used for backup and synchronization.
For example, you can start working on a task on you laptop, then move over to you main machine and have your tasks along with the current worked time automatically updated there; just set up the configuration file to point to a file in your Dropbox folder.
When invoked the tasks.sh
script takes the name of the current directory and updates the configuration to point to /Users/.../Dropbox/tasks/<current-dir-name>.tasks
.
You may associate your favorite editor to open all files with the .tasks
extension; when the -o
option is supplied the script automatically invokes open
on the current tasks file, i.e. fires up the associated text editor.
Place tasks.sh
somewhere in yout path (for example /usr/share/bin
); then, in order to edit and switch to a Dropbox backed per-project tasks file, just type:
$ tasks.sh -o
Check out atea-contrib, a separate repository containing user contributions for Atea.
If you just want to try out Atea, you can grab the pre-packaged dmg
file here.
In order to build, you'll need Leiningen, Clojure's build and dependency tool; first you have to make a standalone jar:
lein deps
lein native-deps
cp native/libtray.jnilib .
lein uberjar
At this point you can just start the jar and it will work.
If you want a native app, you'll need to use Apple's Jar Bundler to create atea.app
out of the generated standalone jar (this can be automated though, patches welcome). In order to hide the dock icon, edit the atea.app/Contents/Info.plist
file and add the following key:
<key>LSUIElement</key>
<string>1</string>
Create a dmg
folder and place the atea.app
bundle there:
mkdir dmg
mv atea.app dmg
ln -s /Applications dmg/Applications
Update the create-dmg
submodule:
git submodule init
git submodule update
And then finally run the make-dmg
script:
./make-dmg
This should create a deployable dmg
file.
Copyright (C) 2012 Philip Kamenarsky
Distributed under the Eclipse Public License, the same as Clojure.