box.matto.nl
Enjoying Open Source Software

Tmux Popup For Fast Access to Task List

Tmux Popup

A rather new function in Tmux is the so called Popup Window.

This window is a floating window that functions like an overlay above your session. With a few lines in your .tmux.conf this can be used to have a efficient and fast access to anything you want in your Tmux pane.

I use it to have quick access to my task list.

Taskwarrior and Vimwiki Diary

My method of managing my tasks consists of two different applications:

  • Taskwarrior
  • Vimwiki Diary

Taskwarrior

I keep my task list in Taskwarrior. This is a great application with clients for several environments, like Linux, FreeBSD and OpenBSD. Also there is a client for Android.

Taskwarrior can be used as a stand alone application, or as a client-server solution. I use the client-server solution. For this I run the taskd daemon on a BeagleBone Black running OpenBSD.

All the clients sync to this server, keeping every task list up to date and in sync.

I use the "task calendar" format to get a quick overview the tasks to perform. For this, I added the line

calendar.details=full

to my .taskrc file.

Vimwiki Diary

I use the Vimwiki Diary for my Most Important Tasks of the current day.

For this I use the checkbox function of Vimwiki. This looks like this:

# Monday 28 September 2020

## Most Important Tasks

- [ ] Write a posting about Tmux
- [ ] Do something else
- [ ] Always have a list of three

Most of the time I set my Most Important Tasks for the day one day before, so in the afternoon of the current day I edit my Vimwiki Diary "tomorrow" page and put those tasks in there. (You open the diary page for the next day with Leader-w Leader-m).

For more information about this, see the book Organize Tomorrow Today, written by Jason Selk.

If haven't set my Most Important Tasks for the current day, I usually add some in the morning.

I aim to have three Most Important Tasks defined, and create a list with three tasks, each with a checkbox.

During the day I can check what my Most Important Tasks are, and if necessary add one or two things that I must not forget to do before the end of the day.

Start Tmux with Xsession

I start Tmux through my .xsessionrc, and have the following lines in it:

tmux new-session -d -s 'workpad' -n 'Vimwiki'
tmux new-session -d -s 'popup' -n 'Task'
tmux new-window -t '=popup' -n 'Vimdiary'
tmux send-keys -t '=popup:=Vimdiary' 'vim -c VimwikiMakeDiaryNote' C-m

The 'workpad' session is my default session. This is started, populated with some windows. When the i3 window manager is started, it opens a terminal screen attached to this tmux workpad session.

The 'popup' session is for the Tmux Popup Window :)

Tmux popup

The following lines in my .tmux.conf file setup the functionality with the popup window:

bind v if-shell -F '#{==:#{session_name},popup}' {
   detach-client
} {
   select-window -t '=popup:Vimdiary'
   popup -w90% -h90% -KER "tmux attach -t popup || tmux new -s popup"
}
bind T if-shell -F '#{==:#{session_name},popup}' {
   detach-client
} {
   select-window -t '=popup:Task'
   popup -w90% -h90% -KER "tmux attach -t popup || tmux new -s popup ; tmux send-keys -t popup:Task \'task due calendar\' C-m"
}

The switches -w and -h are not needed, but create a somewhat larger popup window, which is great for the Taskwarrior output.

As you can see, my current keybindings are:

  • shift-T for Taskwarrior
  • v for the Vimwiki Diary

The keybinding 't' is already used for blanking your Tmux window and displaying a digital clock in it, a very helpful function when you quickly need some privacy. This has become part of my muscle memory and I didn't want to change that, hence the captital T for taskwarrrior.

At the initial setting up of the popup for the Vimwiki Diary I was not very creative with defining the most easy to remember keybinding and just choose one that was not occupied. I just used the 'v' keybinding for testing, and haven't changed it.

Compiling Tmux

On my private OpenBSD laptop, Tmux comes with the popup functionality. Unfortunately, in FreeBSD and in Debian Buster the Tmux version is too old and does not support the Popup window.

My $DaytimeJob-Laptop is a Debian machine and I really like the efficiency of the popup window, so I compiled the current version of Tmux on that machine :)

Have fun!

Tags: taskwarrior tmux vimwiki beagleboneblack