Git Product home page Git Product logo

pomodorotasks2's Introduction

PomodoroTasks2 in copr

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

Table of Contents

INSTALL

Packages

  1. Fedora 24/25 x86:
dnf copr enable liloman/githubs
dnf install pomodoroTasks2

This will install all the timewarrior stuff and set the enviroment properly.

Manual

  1. Taskwarrior dependencies (python based)
pip install tasklib --user (stable branch)
pip install tasklib future --user (other branches)

sudo dnf/apt-get/whatever install taskwarrior/task/whatever
task <<< yes
  1. Timewarrior
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
  1. PomodoroTasks2
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,... :)

Why do I need timewarrior?

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:

  1. Execute the extras/prepare_hooks.sh script:

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

  1. You can create these two aliases for cozyness in your ~/.bashrc I can guarantee that you will use them ;)
alias twt='timew work today'
alias tww='timew work :week'
  1. If you want to track also the time the PC is off (I don't recommend it if you have several PCs and sync your tasks among them) you can execute after every log this script

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
  1. Start enjoying timewarrior!. :)

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

Reminders

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:

  1. Recurrent (ex: birthdate): You create a birthdate and set to be shown with x days on advance until its due date

  2. 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

  3. 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:

Showing reminder

When you mark the task as done or check the checkbox it will be disappear from the timeout splash screen.

Screenshots

Relax time:

25 minutes passed

Back to work:

Back to work?

Menu:

Started with tooltip

Paused with menu

All trayicons:

All icons

Change current task:

Change Task

Change Task 2

Add new task:

Add new Task

Spec

Minimalistic implementation with FSM (Finite State Machine) and some dbus niceness. :)

TODO

  • dbus
  • Timewarrior integration to track the complete lifespan of your computer. ;)
  • Dont wait a minute to refresh the trayicon when used the cli
  • Script to install/uinstall hooks
  • Explain/include reminders
  • Add packages for Ubuntu/Debian/Arch/...
  • Unit testing (fix travis install ... )

FIXED

  1. Linux mint issues
  2. Eliminated cycle when closed app from the sysicon

pomodorotasks2's People

Contributors

liloman avatar madeofmagicandwires avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

pomodorotasks2's Issues

Copr build for Fedora 27

Hi, I would love to try this out. Can you by any chance make the build for Fedora to work again?

cheers.

Get this when I try to execute daemon

/home/carlosonrails/.config/pomodoroTasks2/./pomodoro-daemon.py:324: PyGIDeprecationWarning: GObject.MainLoop is deprecated; use GLib.MainLoop instead loop = GObject.MainLoop() File "/home/carlosonrails/.config/pomodoroTasks2/./pomodoro-systray.py", line 263 print "No pomodoro daemon found" ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SyntaxError: Missing parentheses in call to 'print'. Did you mean print(...)?

Anyone knows how to solve it?

Installation problems

I'm trying to install on Ubuntu 17.04 without success.

The first problem is that the readme seems to be outdated. It tell me to run ./pomodoro-daemon.py but this file does not exists. There is a pomodorotasks/daemon.py. Is this the same thing?

I've tried to run that and got an error:

Traceback (most recent call last):
  File "./pomodorotasks/daemon.py", line 6, in <module>
    from builtins import str
ImportError: No module named builtins

I've noticed a setup.py file on the root of the project. Do I have to run that?

I've tried, bug the shebang is pointing to the wrong path. It's pointing to /bin/env but my Ubuntu install has the env utility on /usr/bin/env. So I edited it and then I tried:

./setup.py build
./setup.py install

This seems to work. I got:

Installing pomodoro-tasks-client script to /usr/local/bin
Installing pomodoro-tasks-daemon script to /usr/local/bin

But trying to run the daemon throws me this:

Traceback (most recent call last):
  File "/usr/local/bin/pomodoro-tasks-daemon", line 6, in <module>
    from pomodorotasks.daemon import main
  File "/usr/local/lib/python2.7/dist-packages/pomodorotasks/daemon.py", line 6, in <module>
    from builtins import str
ImportError: No module named builtins

Maybe I have the wrong Python version? I'm using Python 2.7.13.

get error when i try to run pomodoro-daemon

hi,

i get this below error
./pomodoro-daemon.py
No pomodoro daemon found
Segmentation fault (core dumped)
user@code-B250M-D2V:~/code/python/pomodoroTasks2$

please guide.

Tasklib not found?

Hello,
I have installed the tasklib, taskwarrior and timewarrior, but when I am trying to execute the pomodoro daemon, I get this error:
~/.local/bin $ ./pomodoro-daemon.py Traceback (most recent call last): File "./pomodoro-daemon.py", line 6, in <module> from tasklib import TaskWarrior, Task ImportError: No module named tasklib
Any idea how to fix it? I am not familiar with python scripts :/

subprocess calls vs. importing?

I was working on a setuptools script for a possible AUR package and noticed you often make use of subprocesses where you could instead have imported the module and called any functions directly. Is there any particular reason why you chose to do things this way?

I ask because if you want to install this on a system, it breaks the relative paths for these subprocess calls whereas importing these as modules would work from anywhere. You'll obviously get to review any changes for a pull request, but I figured I'd ask for your reasoning before I start making drastic changes.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.