• Stars
    star
    613
  • Rank 71,427 (Top 2 %)
  • Language
    Clojure
  • Created over 12 years ago
  • Updated over 12 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A minimalistic menu bar time tracker for MacOS

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.

More Repositories

1

leerraum.js

A PDF typesetting library with exact positioning and hyphenated line breaking
TypeScript
231
star
2

concur-replica

Server-side VDOM UI framework for Concur
Haskell
138
star
3

replica

A remote virtual DOM library for Haskell
Haskell
132
star
4

typedraw

Visually describe Haskell/Purescript/Elm types
JavaScript
105
star
5

concur-static

Generate semi-dynamic UIs with Concur
Haskell
58
star
6

purescript-refract

Optical Purescript UI library based on React and the Elm architecture, but without the boilerplate.
PureScript
48
star
7

knit

Ties the knot on data structures that reference each other by unique keys
Haskell
46
star
8

sherlock

Structured json log viewer in the browser
JavaScript
20
star
9

synchron

Synchronous programming in Haskell
Haskell
15
star
10

formulae

Mirror of ftp://ftp.cs.uni-sb.de/formulae - "A Functional Description of TeX's Formula Layout"
Standard ML
12
star
11

atea-contrib

User contributed content for Atea
8
star
12

ytools

A set of structured composable unix tools
Haskell
8
star
13

purescript-interop

Generate Purescript types from Haskell
Haskell
7
star
14

memdb

Efficient in memory indexed database
Haskell
6
star
15

fbookmark

A file based bookmark plugin for Pentadactyl
JavaScript
6
star
16

usercfg

usercfg — remote account configuration protocol
Haskell
5
star
17

purescript-trace

Easily trace function arguments in Purescript.
JavaScript
4
star
18

bookkeeper-permissions

Permissions for bookkeeper records
Haskell
4
star
19

quadtree

Mutable and immutable fast quadtrees
Haskell
3
star
20

refract-replica

Refract backend for Replica
Haskell
3
star
21

purescript-thermite-login-component

Login component for purescript-thermite based on purescript-sync-websockets
PureScript
3
star
22

atea.vim

Atea vim plugin
Vim Script
3
star
23

hyde

A simple Haskell HTML templating engine
Haskell
2
star
24

quadtree-acid

Haskell quad tree experiments
Haskell
2
star
25

leibniz

Approximating nested GADTs/Leibniz equality
Haskell
2
star
26

tellme_api

API backend for telll.me
Erlang
2
star
27

concur-replica-components

Haskell
2
star
28

elm-gen

Autogenerate Elm plumbing
Elm
2
star
29

tellme

A minimalist 1on1 web chat
Clojure
2
star
30

TC

Haskell
2
star
31

dotfiles

Vim Script
2
star
32

distributed-stm

Haskell
2
star
33

concur-core

Testable Concur core model
Haskell
2
star
34

generative-purescript

Generative art experiments in Purescript
JavaScript
2
star
35

typesafe-query

Haskell
1
star
36

typesafe-query-mongodb

Haskell
1
star
37

purescript-relational

PureScript
1
star
38

jdic-macos-tray

A low-level JNI MacOS menu bar integration for Java
Objective-C
1
star
39

purescript-sync-websockets

Purescript client for sync-websockets
JavaScript
1
star
40

stm-store

Transactional database experiment based on Haskell's STM (and unsafeIOToSTM)
Haskell
1
star
41

users-remote

User auth microservice based on users-postgresql-simple and msgpack
Haskell
1
star
42

reentrant

Experiments related to http://www.reddit.com/r/haskell/comments/344x6d/manage_nonreentrant_blocking_code
Haskell
1
star
43

elm-refactor

Haskell
1
star
44

bptree

B+ tree in Typescript (ported from Haskell)
Haskell
1
star
45

raycaster

JavaScript
1
star
46

react-optics

Haskell
1
star
47

purescript-refract-todomvc

purescript-refract Todo MVC example.
CSS
1
star
48

safedata-aeson

Haskell
1
star
49

ocean

WebGL ocean demo
Java
1
star
50

channels-websockets

Haskell
1
star
51

allseeingeye

Experimental code similarity detection tool
Haskell
1
star
52

sync-websockets

Synchronous websocket communication
Haskell
1
star
53

haskell-ajax-cont

Asynchronous http requests using the continuation monad
Haskell
1
star
54

safedata-bson

Haskell
1
star