GOPHERSPACE.DE - P H O X Y
gophering on box.matto.nl
Tmux key-binding to open task calender and list tasks
-----------------------------------------------------

Last edited: $Date: 2020/08/25 08:57:43 $

I have been searching for a way to show my
Taskwarrior calendar and tasks with a single
key-binding in Tmux.

## Automatic start of Tmux

I start Tmux from my i3-config with:

exec --no-startup-id $term -e tmux new-session -s werkpad

This starts tmux with a session named "werkpad".

## Configurion of Taskwarrior

I added the following line to my .taskrc:

    calendar.details=full

With this, the command 'task calendar' shows the 
calender for the current and upcoming months with some
nice colors, as well as a list of the tasks, including
the due dates.


## Configurion of Tmux

After some trial-and-error I came to the following
lines in my .tmux.conf:

bind T if-shell 'tmux has-session -t =werkpad:=twcal' '' \
 'new-window -n twcal' \; send-keys -t '=werkpad:=twcal' 'task calendar' C-m \; \
  select-window -t =werkpad:=twcal

The break-down of this is as folows.

bind T : 
    bind the command to key -T

if-shell : 
    tmux command to do some if-then-else thing

tmux has-session -t =werkpad:=twcal':
    test if window named 'twcal' exists

'':
    if true, do nothing

'new-window -n twcal:
   if false, create new window named 'twcal'

\; :
   start new command after if-then-else thing

send-keys -t '=werkpad:=twcal' :
   send following command to the window named 'twcal'
 
'task calendar' C-m : 
   command to start task calendar followed by 
    (C-m)
   
\; :
  start new command after opening task calendar

select-window -t =werkpad:=twcal :
  set focus to the window named 'twcal'

This last part (select-window) is necessary when the
window named 'twcal' already exists and does not has
the focus.


## Not rocket science

OK, this is very simple. there are two reasons 
why I publish this:

* It isblazingly fast 
* Test if named window exsists is not very much
  documented

Also, for me the Taskwarrior calendar followed by
the list of tasks including due-dates is very,
very useful. And it has nice colors :)