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