/timepp__gnome

A todo.txt manager, time tracker, timer, stopwatch, pomodoro, and alarms extension for gnome-shell.

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Time ++

A todo.txt manager, time tracker, timer, stopwatch, pomodoro, and alarms gnome-shell extension.


Installation

  • You can install this extension from the gnome-shell extensions site.

    NOTE:
    Since it takes some time for the extension to be reviewed, the version on this site might be out of date and contain bugs that have already been fixed. Consider using the github version.

  • You can install it manually by cloning/downloading this repo into your ~/.local/share/gnome-shell/extensions dir and renaming the downloaded dir to timepp@zagortenay333.
    After that, restart gnome-shell (Alt+F2 then type r) and enable the extension via gnome-tweaks tool.


Compatibility

The latest version of this extension is on the master branch, and it supports gnome-shell version 3.24 and 3.26.


Translations

If you want to help out with translations, check out the instructions in the po_files dir.


Lock Screen

‼️ Note that all gnome-shell extensions get disabled in the lock screen.

Alarms, stopwatch and other timers won't work when the screen is locked.


Sections

Each section (timer, stopwatch, alarms..) can open as a separate menu when it's icon is clicked, or it can appear together with other sections in one menu.

Individual sections can be disabled.

Right-clicking on the panel icons will open a context section with some useful links.


Fullscreen Interface

This extension has a fullscreen interface, which can be used to control a corresponding section as well as replace regular notifications.

The interface has multi-monitor support, and it can be opened (and brought into focus) via a keyboard shortcut.

When in fullscreen, some keyboard shortcuts are available:

All
Tab navigate forward
Ctrl + Tab navigate backward
Esc close fullscreen
Timer
space stop/start timer
r or Backspace start timer at the last manually set time
1 ... 9 and 0 start timer at the time specified by a num key.
1=1min, 2=2min, ..., 0=10min
Stopwatch
space stop/start timer
l or Enter lap
r or Backspace reset
Pomodoro
space stop/start timer
Stats View
f or / start searching history

Todo.txt Manager

Some of the features of the todo.txt manager are:

  • Fuzzy task searching.
  • Filtering by context, project, priority, custom fuzzy filters...
  • Toggling a filter on/off by clicking on a priority, context, or proj in a task.
  • Support for multiple todo files and corresponding done files and csv dirs.
  • Compound sorting by priority, due date, completion date, creation date, etc...
  • Fuzzy autocompletion for contexts and projects when inline editing a task.
  • Autoupdating when the todo.txt file changes.
  • Deleting all completed tasks and optionally storing them into a done.txt file.
  • Switching between different views via keyboard shortcuts.

The todo.txt manager also has support for urls and file paths:

(A) @asdf https://www.google.com
(A) @asdf www.google.com

(A) @asdf /home/user/Documents
(A) @asdf ~/Documents
(A) @asdf ~/Documents/img.png
(A) @asdf ~/Documents/file\ with\ spaces.png

Supported todo.txt extensions are:

tracker_id:string Used to identify a task when starting/stopping the time-tracker via the command-line.
Multiple tasks can have the same tracker_id.
pri:A-Z Used to restore the priority of a completed task when it gets reopend.
h:1 Hides a task.

This extension disables all other extensions.

Among other things, can be used to populate the todo manager
with context/project keywords for autocompletion.
(t|defer):yyyy-mm-dd Defers opening a task until specified date.
due|DUE:yyyy-mm-dd Sets a due date on a task.
Timepp will also show how many days until/since the due date as well as
provide the ability to sort tasks by due date.
rec:recurrence_string Used to automatically reopen a task after a given amount of time.

This extension is incompatible with the due and defer extensions.

Each time a task recurs, it's creation date is updated.
If a task is already open on the date of the recursion, it's creation date will be updated anyway.


The recurrence_string can be in one of 3 diff forms:
    (n=natural number, d=days, w=weeks, m=months)

  1. rec:n(d|w)
    This means that the task will recur n days/weeks after the creation date.
    - This rec type requires a creation date.
    Examples:
    • x 2000-01-01 2000-01-01 rec:12d means that the task will reopen
      every 12 days starting from 2000-01-01. After 12 days it will look like
      2000-01-13 rec:12d, and 12 days after that it will look like
      2000-01-25 rec:12d, and so on...

  2. rec:x-n(d|w)
    This means that the task will recur n days/weeks after the completion date.
    - This rec type requires a completion date if the task is complete.
    Examples:
    • x 2000-01-01 rec:x-12d recurs 12 days after 2000-01-01.
    • (A) rec:x-3w recurs 3 weeks after completion date.

  3. rec:nd-nm
    This means that the task will recur on the n-th day of every n-th month starting
    from the month of creation.
    - This rec type requires a creation date.
    - 'Month of creation' here refers to the month written into the todo.txt file.
    - If a month doesn't have the particular n-th day, the last day of that month will be used instead.

    Examples:
    • (A) 2000-01-01 rec:12d-1m recurs on the 12th day of each month.
    • (A) 2000-01-01 rec:1d-1m recurs on the first day of each month.
    • (A) 2000-01-01 rec:31d-1m recurs on the last day of each month.
    • (A) 2000-01-01 rec:64d-1m also recurs on the last day of each month.
    • (A) 2000-01-01 rec:29d-1m recurs on the 29th day of each month, and in
      the case of February, on the 28th if it doesn't have 29 days.
    • (A) 2000-02-02 rec:12d-2m recurs on the 12th day every 2 months starting from February.
      If the actual current date is 2000-02-08, the task recurs on 2000-02-12.
      If the actual current date is 2000-02-16, the task recurs on 2000-04-12.
    • (A) 2000-01-01 rec:1d-12m recurs on the first day of every year.
    • (A) 2000-02-01 rec:29d-24m recurs on the last day of February every 2 years starting from 2000.

Time Tracker

The time tracker is built into the todo.txt manager and allows you to track the time spent on a particular task as well as the time spent on a particular project.

This extension features a fullscreen stats view for browsing your time-tracker data

  • The stats view has a cool looking vbars graph for displaying data
  • It supports viewing time spent on tasks/projects on any recorded day
  • You can see a detailed view for a particular task/project
  • You can fuzzy search your history
  • You can view the most worked on tasks/projects in a particular time interval

When pressing the play button to track a task, all projects associated with that task will also be tracked.

At the start of each year, the current yearly csv file will be archived and a new file will be started.

There is also a daily csv file which gets appended to the yearly file at the start of each day.

NOTE:
When editing a task that has been time-tracked, only the corresponding entry in the daily csv file will be updated. The yearly csv file will not be changed.

The csv file has the form:

date, time spent (hh:mm), type ('++' = project, '()' = task), task or project

2017-02-04, 08:03, ++, "+my_project"
2017-02-04, 23:59, ++, "+protect_gotham"
2017-02-04, 02:03, ++, "+protect_gotham"
2017-02-04, 02:03, (), "(A) Watch the world burn."
2017-02-04, 02:03, (), "(A) Catch Joker."
2017-02-04, 02:03, (), "(Z) Take the trash out."
2017-02-05, 08:03, ++, "+my_project"
2017-02-05, 23:59, ++, "+protect_gotham"
2017-02-05, 02:03, ++, "+protect_gotham"
2017-02-05, 02:03, (), "(A) Watch the world burn."
2017-02-05, 02:03, (), "x 2017-02-05 Catch Joker."
2017-02-05, 02:03, (), "(Z) Take the trash out."

HINT:
There is an option to pause the time tracker when the pomodoro stops!


DBus API

This extension comes with a dbus api. Check out the dbus dir for info on what you can do.

There are also some example scripts that might come in handy. 😄


Custom Theme Support

This extension supports custom themes. In order to style it, place a timepp.css file into your theme's root directory (the dir where the gnome-shell.css file is).

You must use the !important directive in order to override a property from the extensions' stylesheet.


Pango Markup

The todo.txt manager, timer and alarm support pango markup.

NOTE:
The pango markup will appear in the todo.txt file as well if used in the todo.txt manager.
Notifications will only show the <b>, <i>, <u> tags and links.


Preview

Gnome-Shell theme, Wallpaper

preview