Taskwarrior
takes 1 minute to read
I've used a lot's of tools to get a grip on my todo lists for work, for the scouting movement, for technical projects, household, etc. Started by using pen and paper, switched to a little notebook (which I still use for short-term tasks) to start using software to organize them.
I've used evernote, gtasks, tracks, github issues, gitlab issues, redmine tickets, in short plenty passed by only tracks survived. I still use it for my work related projects, everyday at 8:30AM I get my list of tasks for that day. That way I have some sort of control on my projects.
Nevertheless there was still some sort of missing feature, an integration with the other issue trackers I use like github and redmine for example. I dreamed of one central overview of all my tasks/issues/projects. And some weeks ago I just stumbled into the solution of that dream, taskwarrior will organize my life from now on.
It's a nifty command line based piece of software with all the features I needed, due dates, projects, tags, customized reports, etc. I completely get enthusiastic when finding out the bugwarrior module from Ralph Bean which let you to import tasks from many different services like github, redmine & trac.
So I started on this new project by adding a new task to my tracks instance: "Migrate to taskwarrior".
Installation of the task service
# yum install task
By following the 30 sec tutorial you get an idea of the basics, but for a full experience and howto I recommend reading the full tutorial. I created a dedicated user for managing my todo list on my CentOS 6.4 machine.
Configuration of the task service is done in the ~/.taskrc file where you can change the data & log files locations, setting a theme a other configuration parameters.
Installation of task-web, a nice and clear frontend (make sure to use ruby 1.9.3, I had performance issues when using ruby 2.0.0):
# gem install taskwarrior-web thin $ task-web -s thin -L &
I added the task-web.user & task-web.passwd parameters to my ~/.taskrc file for basic http authentication, and opted for the thin webserver rather than the default webrick when using the task-web frontend. Once you've stared the service your instance should be accessible on http://your.ip.of.the.server:5678 in your web browser. (make sure to open the port in your servers firewall)
You can choose your own port by adding the option -p XXX in your command (task-web -s thin -p XXX -L &). All the options are listed in the help menu (task-web --help).
Installation of bugwarrior:
As mentioned before the biggest advantage of using taskwarrior to me is the import feature of some several third party services. It's easy to install by using the pip installer:
$ pip install bugwarrior
After that you can configure the ~/.bugwarriorrc file to your needs. After some struggling I got it working with the great help of the developer Ralph Bean.
Example of my ~/.bugwarriorrc file:
[general] targets = github, redmine log.level = INFO log.file = /var/log/tasks/bugwarrior.log bitly.api_user = USERNAME bitly.api_key = API-KEY multiprocessing = True [notifications] notifications = False [github] service = github username = USERNAME default_priority = M login = USERNAME passw = PASSWORD [redmine] service = redmine url = https://redmine.url key = REDMINE-API-KEY user_id = NUMERIC-USER-ID project_name = NAME-OF-THE-PROJECT-TASK-WILL-GET-ON-IMPORT
Once configured you can run the server and check the log's:
$ bugwarrior-pull $ cat /var/log/tasks/bugwarrior.log $ task list
Once you initialized the import you can create a cronjob for it:
$ crontab -e # Bugwarrior import 30 5 * * * /usr/bin/bugwarrior-pull
That way every day at 5:30AM the tasks from 3Th party services will be imported.
The only feature I'm still missing is a 2 way synchronization. So I can edit the tasks in taskwarrior too, but that's something for utopia :)
Conky monitoring:
Is a already wrote about before I'm using conky as a dashboard together with my ratpoison setup. I already wrote a script to fetch my tracks issues. But now I need to fetch my task list from taskwarrior. So I created a custom task report configured in my ~/.taskrc file:
# Custom reports report.conky.description=Conky report report.conky.columns=project,description.truncated,depends.indicator,priority report.conky.labels=Project,Desc,D,P report.conky.sort=due+,project+,priority+ report.conky.filter=status:pending limit:page
Using a ssh connection you can then fetch the output from the command 'task conky' and parse it into a file using a bash script.
Because all my project definitions containing a hyphen I can parse them so I can grep titles and create new lines so I can parse them using the conky syntax.
I do still have 2 things I need to investigate time into:
Mail weekly tasks
Using taskreport but I got some errors after installing using 'pip install taskreport':
$ taskreport File "/usr/bin/taskreport", line 51 for key in ['userName', 'server', 'port']} ^ SyntaxError: invalid syntax
Installation of taskd server (for synchronization with mirakel):
Until today the mirakel app always crashes when trying to sync after initialized with the created key.
# git clone git://tasktools.org/taskd.git # wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm # rpm -Uvh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm # yum install cmake28 # yum install gnutls-devel # yum install libuuid-devel # cmake28 . # make # make install # yum install gnutls-utils # find and replace gnutls-certtool with certtool # cd pki # ./generate # add_user.sh script