pkamenarsky / atea

A minimalistic menu bar time tracker for MacOS
614 stars 24 forks source link

Atea

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.

Task entry

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":

Time tracking

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.

Configuration & files

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.

Dropbox integration

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.

Multiple projects

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

User contributions

Check out atea-contrib, a separate repository containing user contributions for Atea.

Building

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.

License

Copyright (C) 2012 Philip Kamenarsky

Distributed under the Eclipse Public License, the same as Clojure.