Systray app for pomodoro with taskwarrior
Don't make any excuse anymore to not use the Pomodoro Technique wikipedia or The Pomodoro Technique !
Pomodoro technique allows you to concentrate on the current task and take short breaks meanwhile works. If you get that and join it with a task manager alike taskwarrior (or any other) you can have a complete workflow, accounting the time spend on any task meanwhile you take the proper rests for your brain, body, life and eyes. :)
dnf copr enable liloman/githubs
dnf install pomodoroTasks2
This will install all the timewarrior stuff and set the enviroment properly.
pip install tasklib --user (stable branch)
pip install tasklib future --user (other branches)
sudo dnf/apt-get/whatever install taskwarrior/task/whatever
task <<< yes
sudo dnf/apt-get/whatever install build-essential cmake
git clone --recursive https://git.tasktools.org/TM/timew.git timew.git
cd timew.git
git checkout master
cmake -DCMAKE_BUILD_TYPE=release .
make
sudo make install
timew <<< yes
git clone https://github.com/liloman/pomodoroTasks2
git checkout stable
cd pomodoroTasks2/
./pomodoro-daemon.py
You can customize the working time and the break times (short and long), just exporting a few ENV variables in your ~/.bashrc.
#default pomodoro session (minutes)
export POMODORO_TIMEOUT=25
#default pomodoro short break (minutes)
export POMODORO_STIMEOUT=5
#default pomodoro long break (minutes)
export POMODORO_LTIMEOUT=15
So just launch the pomodoro-daemon.py and you are ready to go, feel free to add it in ~/.local/bin,autostart,systemd,... :)
Because you the objective is track all your workflow and nothing better for that purpose than the newcomer and taskwarrior brother timewarrior. :)
If you wish to track every task of taskwarrior in timewarrior you need to:
So it will be:
git clone https://github.com/liloman/pomodoroTasks2
git checkout stable
cd pomodoroTasks2/
./extras/prepare_hooks.sh install .
And for now on: a. Each time you start/stop a task it will be tracked with timewarrior unless it contains the +notimew tag. ;)
b. Timewarrior will stop tracking on logout/shutdown
c. Everytime that there's a pomodoro timeout the app automatically track it
d. You have a new timewarrior report for your work (everything within a +nowork tag) ;)
alias twt='timew work today'
alias tww='timew work :week'
So it will be:
cd your-autostart-dir/xinit/systemd/whatever/...
wget https://raw.githubusercontent.com/liloman/warriors/master/last-boots.sh
chmod u+x last-boots.sh
How much have I been working today?
prompt>twt
Total by Tag from 2017-01-15 23:00:00 - 2017-01-16 09:59:28 (sorted by time)
Tag Total
---------------------------------- ---------------
More stuff / pro:stuff 0 days, 2:14:00
Doing demo / pro:dev.demo 0 days, 3:04:49
----------------
Total 0 days, 5:18:49
Umm, 5:18 hours. Niiiiiiiiiiice.
So no remorse of conscience for today. ;)
Of course you could know how much have you worked this week for a project for example:
prompt>tww pro:awesome
Total by Tag from 2017-01-08 23:00:00 - 2017-01-15 23:00:00 (sorted by time)
Tag Total
---------------------------------- ---------------
Fixing that bugs 1/ pro:awesome 0 days, 0:14:00
Fixing that bugs 2 / pro:awesome 1 days, 2:14:00
Writing docs / +docs / pro:awesome 3 days, 3:04:49
----------------
Total 4 days, 5:32:49
It's another functionality included into pomodoroTasks2.
My use case is for that kind of tasks that you need to be reminded about and most time even on advance. So I use it to remember birthdays, due times or important tasks for this week in conclusión as a tasks calendar. :)
It's based on taskwarrior recurrence tasks and basically you just need to create a task with the +reminder tag and it will be displayed on timeout as a remind for your rewarded spare time. ;)
I include the script I use myself to create them or you can use whatever you want just include a +reminder tag on any task and it'll be show up on timeout if it's on pending status.
My script can create 3 types of reminders:
Recurrent (ex: birthdate): You create a birthdate and set to be shown with x days on advance until its due date
NonRecurrent(from date): Create a task for the day/month/year and set it to be show x days on advance until its due date
Inmediate(from today!): Create a task to be shown from now on or after x days until it's done
If you installed the package it will add a new command to /usr/bin/ otherwise you have to copy it like:
git clone https://github.com/liloman/pomodoroTasks2
git checkout stable
cd pomodoroTasks2/extras
cp add-reminder.sh wherever-you-want-it
Workflow to create the example:
$add-reminder.sh
Select the type of reminder
1) Recurrent (ex: birthdate) 3) Inmediate(from today!)
2) NonRecurrent(from date)
#? 3
Description:Example reminder for screenshot!
task add 'Example reminder for screenshot!' pro:tasks due:someday wait:today until:due+1d recur: +reminder rc.dateformat=D/M/Y
Are you sure?
1) Yes
2) No
#? 1
Created task 35.
And here it's the result:
When you mark the task as done or check the checkbox it will be disappear from the timeout splash screen.
Relax time:
Back to work:
Menu:
All trayicons:
Change current task:
Add new task:
Minimalistic implementation with FSM (Finite State Machine) and some dbus niceness. :)