NowFocus 0.2.0__tar.gz → 0.2.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {nowfocus-0.2.0/src/NowFocus.egg-info → nowfocus-0.2.1}/PKG-INFO +58 -55
- nowfocus-0.2.1/README.md +115 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/pyproject.toml +1 -1
- {nowfocus-0.2.0 → nowfocus-0.2.1/src/NowFocus.egg-info}/PKG-INFO +58 -55
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/__main__.py +2 -1
- nowfocus-0.2.1/src/nowfocus/example-todo.txt +13 -0
- nowfocus-0.2.1/src/nowfocus/sessions.csv +4 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/task_window.py +16 -20
- nowfocus-0.2.0/README.md +0 -112
- nowfocus-0.2.0/src/nowfocus/example-todo.txt +0 -13
- nowfocus-0.2.0/src/nowfocus/sessions.csv +0 -1
- {nowfocus-0.2.0 → nowfocus-0.2.1}/LICENSE +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/setup.cfg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/SOURCES.txt +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/dependency_links.txt +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/entry_points.txt +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/requires.txt +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/top_level.txt +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/__init__.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/conf.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/activitywatch.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/caldav.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/csv.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/psc_timetracker.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/taskwarrior.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/timewarrior.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/todo_template.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/todotxt.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/trello.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/txt.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/vikunja.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/cancel.png +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/cancel.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/edit.png +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/edit.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-0.png +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-0.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-1.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-2.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-3.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-4.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-5.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-6.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-7.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-8.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-9.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon.png +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/mark-done.png +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/mark-done.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/pause.png +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/pause.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/settings.png +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/settings.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/action-unavailable-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/applications-engineering-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/background-selected-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/cancel-operation-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-checked-symbolic (2).svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-checked-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-mixed-symbolic (2).svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-mixed-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-symbolic (2).svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/clock-app-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/document-edit-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/document-new-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/document-open-recent-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/edit-find-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/edit-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/filter-flagged-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/format-unordered-list-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/help-about-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/list-add-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/list-remove-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/media-playback-pause.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/media-playback-start-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/no-event-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/object-select-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic-2.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-keyboard-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic (2).svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic-2.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-system-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-time-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-wacom-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.clocks-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/pause-large-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/preferences-system-time-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/process-stop-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/selection-checked.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/software-installed-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/stopwatch-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/system-settings-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/timer-sand-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/timer-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/user-trash-symbolic (2).svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/user-trash-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-fullscreen-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-more-horizontal-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-more-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-restore-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-sort-ascending-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-sort-descending-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-tasks-unscheduled-symbolic.svg +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/new_task_dialog.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/runner.sh +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/session_edit_dialog.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/session_options.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/settings.py +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/sound/bell-xylophone-g.mp3 +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/sound/dinner-bell.mp3 +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/sound/xylophone-chord.mp3 +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/styles.css +0 -0
- {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: NowFocus
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: NowFocus: the open source task-tracking self-control panel.
|
|
5
5
|
Author: Altruist Enterprises
|
|
6
6
|
Project-URL: Homepage, https://gitlab.com/GitFr33/what-am-i-doing
|
|
@@ -44,25 +44,34 @@ Requires-Dist: vobject
|
|
|
44
44
|
Requires-Dist: x-wr-timezone
|
|
45
45
|
Dynamic: license-file
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
<img src="nowfocus.svg" style="float: left; width:120px;">
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
# NowFocus <br> Open-source task timer for linux
|
|
50
|
+
**Avoid multifailing. Master your to-do lists. Track your time.**
|
|
50
51
|
|
|
52
|
+
NowFocus is a clean, keyboard-driven activity tracker build with python + GTK that flexibly connects multiple to-do lists with multiple time trackers and displays your current task and time spent in the status bar.
|
|
51
53
|
|
|
52
54
|
## Features
|
|
53
|
-
|
|
54
55
|
- Unlimited flexible combinations of to-do lists and time tracking systems
|
|
55
|
-
-
|
|
56
|
+
- Infinitely nestable lists
|
|
56
57
|
- Inactivity detection that automatically pauses time tracking
|
|
57
58
|
- Pomodoro timer
|
|
58
59
|
- Task prioritization
|
|
59
60
|
- Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
|
|
60
61
|
- Randomness interrupt bell (optional) to keep you on track with tracking your time
|
|
61
|
-
-
|
|
62
|
+
- Keyboard-driven interface
|
|
62
63
|
- Offline to-do list cache
|
|
63
|
-
-
|
|
64
|
+
- CLI
|
|
65
|
+
- Run a command (or launch an application) when a task is started
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
<img src="Screenshot-25-09-23-11-42-56.webp" style="width:30%;">
|
|
69
|
+
<img src="Screenshot-25-09-23-11-46-14.webp" style="width:30%;">
|
|
70
|
+
<img src="Screenshot-25-09-23-11-53-22.webp" style=" width:30%;">
|
|
64
71
|
|
|
65
|
-
|
|
72
|
+
<br>
|
|
73
|
+
|
|
74
|
+
### Currently Supported To-do List Backends
|
|
66
75
|
|
|
67
76
|
- Simple text or markdown file with indentation based sub-lists
|
|
68
77
|
- Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
|
|
@@ -70,8 +79,9 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
|
|
|
70
79
|
- [TaskWarrior](https://taskwarrior.org/)
|
|
71
80
|
- [Vikunja](https://www.vikunja.io)
|
|
72
81
|
- [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
|
|
82
|
+
- [Trello](https://www.trello.com)
|
|
73
83
|
|
|
74
|
-
### Currently Supported Time
|
|
84
|
+
### Currently Supported Time Tracker Backends
|
|
75
85
|
|
|
76
86
|
- CSV file
|
|
77
87
|
- [ActivityWatch](https://www.activitywatch.net)
|
|
@@ -79,53 +89,62 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
|
|
|
79
89
|
- [TimeWarrior](https://timewarrior.net)
|
|
80
90
|
|
|
81
91
|
|
|
92
|
+
## Installation (using pipx)
|
|
82
93
|
|
|
83
|
-
|
|
84
|
-
If you don't have pipx install
|
|
94
|
+
1. Run the following in terminal to install with dependencies:
|
|
85
95
|
```
|
|
86
|
-
sudo apt install pipx
|
|
96
|
+
sudo apt install pip pipx install gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf python3.12-venv libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
87
97
|
pipx ensurepath
|
|
88
|
-
|
|
98
|
+
pipx install NowFocus
|
|
99
|
+
```
|
|
100
|
+
2. Now run `nowfocus` and check for errors
|
|
89
101
|
|
|
102
|
+
3. Set up a keybinding (on Ubuntu or Linux Mint), open **Setting > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the **command** to `nowfocus`, and pick whatever key combo you'd like.
|
|
90
103
|
|
|
91
|
-
|
|
104
|
+
4. Add the following command to your startup applications: `nowfocus --force`
|
|
92
105
|
|
|
93
|
-
- Install dependencies:
|
|
94
|
-
```
|
|
95
|
-
sudo apt install gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf python3.12-venv pip libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
96
|
-
```
|
|
97
106
|
|
|
98
|
-
|
|
107
|
+
## Usage
|
|
99
108
|
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
python3 -m venv .venv/nowfocus
|
|
103
|
-
source .venv/nowfocus/bin/activate
|
|
104
|
-
```
|
|
109
|
+
#### Set up to-do lists and time trackers
|
|
105
110
|
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
pip install nowfocus
|
|
109
|
-
```
|
|
110
|
-
- Run `python3 -m what-am-doing` and check for errors
|
|
111
|
+
Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
|
|
111
112
|
|
|
112
|
-
|
|
113
|
+
#### Task Window Keybindings
|
|
113
114
|
|
|
115
|
+
- `F11` Toggle fullscreen
|
|
116
|
+
- `Esc` Close task window
|
|
117
|
+
- `Enter` Start top task (or make a new task with current search phrase if no results)
|
|
118
|
+
- `Ctrl + P` **Pause** current task
|
|
119
|
+
- `Ctrl + D` Pause current task and mark it **Done**
|
|
120
|
+
- `Ctrl + X` Cancel current task
|
|
121
|
+
- `Ctrl + N` **New** task
|
|
122
|
+
- `Ctrl + R` **Refresh** todolists
|
|
123
|
+
- `Ctrl + L` or `Ctrl + F` **Focus** the task search
|
|
124
|
+
|
|
125
|
+
#### Commandline Interface
|
|
126
|
+
|
|
127
|
+
- To raise the task window use simply: `nowfocus`
|
|
128
|
+
- If NowFocus has crashed or failed to shut down nicely use `nowfocus --force`
|
|
129
|
+
- To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
|
|
130
|
+
- To stop timing use `nowfocus stop`
|
|
131
|
+
- Start with verbose logging use: `nowfocus -l 3`
|
|
132
|
+
- Start with targeted verbose logging use: `nowfocus -s trello`
|
|
114
133
|
|
|
115
|
-
### Install from Source
|
|
116
134
|
|
|
117
|
-
|
|
118
|
-
- Change to `YOUR_INSTALL_PATH` directory with `cd /path/to/where/you/cloned/nowfocus`
|
|
135
|
+
## Development
|
|
119
136
|
|
|
120
|
-
|
|
121
|
-
- Run `python3 __main__.py` and check for errors
|
|
122
|
-
- Add the following to your startup applications: `bash -c "source .venv/nowfocus/bin/activate; python3 /YOUR_INSTALL_PATH/src/what-am-doing/__main__.py"`
|
|
137
|
+
### Install from Source
|
|
123
138
|
|
|
139
|
+
- Install dependencies from above.
|
|
140
|
+
- Clone this repo somewhere (referred to as `YOUR_INSTALL_PATH`)
|
|
141
|
+
- Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
|
|
142
|
+
- build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
|
|
143
|
+
- pipx install -e --force YOUR_INSTALL_PATH/monotask/
|
|
124
144
|
|
|
125
|
-
## Usage
|
|
126
145
|
|
|
127
|
-
- Open settings and add your to-do list and time tracker details
|
|
128
146
|
|
|
147
|
+
<!--
|
|
129
148
|
## Build Flatpak
|
|
130
149
|
|
|
131
150
|
```
|
|
@@ -134,23 +153,7 @@ python3 -m build
|
|
|
134
153
|
flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
|
|
135
154
|
flatpak run APPID
|
|
136
155
|
```
|
|
137
|
-
|
|
138
|
-
## Keybindings
|
|
139
|
-
|
|
140
|
-
To set up a keybinding to open your tasks on Ubuntu or Linux Mint, open **Setting > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the **command** to `/YOUR_INSTALL_PATH/src/what-am-doing/signal.sh`, and pick whatever key combo you'd like.
|
|
141
|
-
|
|
142
|
-
### Task Window Keybindings
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
- `F11` Toggle fullscreen
|
|
146
|
-
- `Esc` Close task window
|
|
147
|
-
- `Enter` Start top task (or make a new task with current search phrase if no results)
|
|
148
|
-
- `Ctrl + P` **Pause** current task
|
|
149
|
-
- `Ctrl + D` Pause current task and mark it **Done**
|
|
150
|
-
- `Ctrl + X` Cancel current task
|
|
151
|
-
- `Ctrl + N` **New** task
|
|
152
|
-
- `Ctrl + R` **Refresh** todolists
|
|
153
|
-
- `Ctrl + L` or `Ctrl + F` **Focus** the task search
|
|
156
|
+
-->
|
|
154
157
|
|
|
155
158
|
|
|
156
159
|
<!-- ## Contributing
|
nowfocus-0.2.1/README.md
ADDED
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
<img src="nowfocus.svg" style="float: left; width:120px;">
|
|
2
|
+
|
|
3
|
+
# NowFocus <br> Open-source task timer for linux
|
|
4
|
+
**Avoid multifailing. Master your to-do lists. Track your time.**
|
|
5
|
+
|
|
6
|
+
NowFocus is a clean, keyboard-driven activity tracker build with python + GTK that flexibly connects multiple to-do lists with multiple time trackers and displays your current task and time spent in the status bar.
|
|
7
|
+
|
|
8
|
+
## Features
|
|
9
|
+
- Unlimited flexible combinations of to-do lists and time tracking systems
|
|
10
|
+
- Infinitely nestable lists
|
|
11
|
+
- Inactivity detection that automatically pauses time tracking
|
|
12
|
+
- Pomodoro timer
|
|
13
|
+
- Task prioritization
|
|
14
|
+
- Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
|
|
15
|
+
- Randomness interrupt bell (optional) to keep you on track with tracking your time
|
|
16
|
+
- Keyboard-driven interface
|
|
17
|
+
- Offline to-do list cache
|
|
18
|
+
- CLI
|
|
19
|
+
- Run a command (or launch an application) when a task is started
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
<img src="Screenshot-25-09-23-11-42-56.webp" style="width:30%;">
|
|
23
|
+
<img src="Screenshot-25-09-23-11-46-14.webp" style="width:30%;">
|
|
24
|
+
<img src="Screenshot-25-09-23-11-53-22.webp" style=" width:30%;">
|
|
25
|
+
|
|
26
|
+
<br>
|
|
27
|
+
|
|
28
|
+
### Currently Supported To-do List Backends
|
|
29
|
+
|
|
30
|
+
- Simple text or markdown file with indentation based sub-lists
|
|
31
|
+
- Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
|
|
32
|
+
- [todotxt format](http://todotxt.org/)
|
|
33
|
+
- [TaskWarrior](https://taskwarrior.org/)
|
|
34
|
+
- [Vikunja](https://www.vikunja.io)
|
|
35
|
+
- [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
|
|
36
|
+
- [Trello](https://www.trello.com)
|
|
37
|
+
|
|
38
|
+
### Currently Supported Time Tracker Backends
|
|
39
|
+
|
|
40
|
+
- CSV file
|
|
41
|
+
- [ActivityWatch](https://www.activitywatch.net)
|
|
42
|
+
- [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
|
|
43
|
+
- [TimeWarrior](https://timewarrior.net)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
## Installation (using pipx)
|
|
47
|
+
|
|
48
|
+
1. Run the following in terminal to install with dependencies:
|
|
49
|
+
```
|
|
50
|
+
sudo apt install pip pipx install gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf python3.12-venv libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
51
|
+
pipx ensurepath
|
|
52
|
+
pipx install NowFocus
|
|
53
|
+
```
|
|
54
|
+
2. Now run `nowfocus` and check for errors
|
|
55
|
+
|
|
56
|
+
3. Set up a keybinding (on Ubuntu or Linux Mint), open **Setting > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the **command** to `nowfocus`, and pick whatever key combo you'd like.
|
|
57
|
+
|
|
58
|
+
4. Add the following command to your startup applications: `nowfocus --force`
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
## Usage
|
|
62
|
+
|
|
63
|
+
#### Set up to-do lists and time trackers
|
|
64
|
+
|
|
65
|
+
Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
|
|
66
|
+
|
|
67
|
+
#### Task Window Keybindings
|
|
68
|
+
|
|
69
|
+
- `F11` Toggle fullscreen
|
|
70
|
+
- `Esc` Close task window
|
|
71
|
+
- `Enter` Start top task (or make a new task with current search phrase if no results)
|
|
72
|
+
- `Ctrl + P` **Pause** current task
|
|
73
|
+
- `Ctrl + D` Pause current task and mark it **Done**
|
|
74
|
+
- `Ctrl + X` Cancel current task
|
|
75
|
+
- `Ctrl + N` **New** task
|
|
76
|
+
- `Ctrl + R` **Refresh** todolists
|
|
77
|
+
- `Ctrl + L` or `Ctrl + F` **Focus** the task search
|
|
78
|
+
|
|
79
|
+
#### Commandline Interface
|
|
80
|
+
|
|
81
|
+
- To raise the task window use simply: `nowfocus`
|
|
82
|
+
- If NowFocus has crashed or failed to shut down nicely use `nowfocus --force`
|
|
83
|
+
- To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
|
|
84
|
+
- To stop timing use `nowfocus stop`
|
|
85
|
+
- Start with verbose logging use: `nowfocus -l 3`
|
|
86
|
+
- Start with targeted verbose logging use: `nowfocus -s trello`
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
## Development
|
|
90
|
+
|
|
91
|
+
### Install from Source
|
|
92
|
+
|
|
93
|
+
- Install dependencies from above.
|
|
94
|
+
- Clone this repo somewhere (referred to as `YOUR_INSTALL_PATH`)
|
|
95
|
+
- Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
|
|
96
|
+
- build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
|
|
97
|
+
- pipx install -e --force YOUR_INSTALL_PATH/monotask/
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
<!--
|
|
102
|
+
## Build Flatpak
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
python3 -m build
|
|
106
|
+
# python3 flatpak-pip-generator --runtime=org.gnome.Sdk/x86_64/47 PACKAGE # run this for lots of stuff
|
|
107
|
+
flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
|
|
108
|
+
flatpak run APPID
|
|
109
|
+
```
|
|
110
|
+
-->
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
<!-- ## Contributing
|
|
114
|
+
Package it for your operating system.
|
|
115
|
+
Write a connector for your favorite to-do list or time tracker -->
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: NowFocus
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.1
|
|
4
4
|
Summary: NowFocus: the open source task-tracking self-control panel.
|
|
5
5
|
Author: Altruist Enterprises
|
|
6
6
|
Project-URL: Homepage, https://gitlab.com/GitFr33/what-am-i-doing
|
|
@@ -44,25 +44,34 @@ Requires-Dist: vobject
|
|
|
44
44
|
Requires-Dist: x-wr-timezone
|
|
45
45
|
Dynamic: license-file
|
|
46
46
|
|
|
47
|
-
|
|
47
|
+
<img src="nowfocus.svg" style="float: left; width:120px;">
|
|
48
48
|
|
|
49
|
-
|
|
49
|
+
# NowFocus <br> Open-source task timer for linux
|
|
50
|
+
**Avoid multifailing. Master your to-do lists. Track your time.**
|
|
50
51
|
|
|
52
|
+
NowFocus is a clean, keyboard-driven activity tracker build with python + GTK that flexibly connects multiple to-do lists with multiple time trackers and displays your current task and time spent in the status bar.
|
|
51
53
|
|
|
52
54
|
## Features
|
|
53
|
-
|
|
54
55
|
- Unlimited flexible combinations of to-do lists and time tracking systems
|
|
55
|
-
-
|
|
56
|
+
- Infinitely nestable lists
|
|
56
57
|
- Inactivity detection that automatically pauses time tracking
|
|
57
58
|
- Pomodoro timer
|
|
58
59
|
- Task prioritization
|
|
59
60
|
- Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
|
|
60
61
|
- Randomness interrupt bell (optional) to keep you on track with tracking your time
|
|
61
|
-
-
|
|
62
|
+
- Keyboard-driven interface
|
|
62
63
|
- Offline to-do list cache
|
|
63
|
-
-
|
|
64
|
+
- CLI
|
|
65
|
+
- Run a command (or launch an application) when a task is started
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
<img src="Screenshot-25-09-23-11-42-56.webp" style="width:30%;">
|
|
69
|
+
<img src="Screenshot-25-09-23-11-46-14.webp" style="width:30%;">
|
|
70
|
+
<img src="Screenshot-25-09-23-11-53-22.webp" style=" width:30%;">
|
|
64
71
|
|
|
65
|
-
|
|
72
|
+
<br>
|
|
73
|
+
|
|
74
|
+
### Currently Supported To-do List Backends
|
|
66
75
|
|
|
67
76
|
- Simple text or markdown file with indentation based sub-lists
|
|
68
77
|
- Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
|
|
@@ -70,8 +79,9 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
|
|
|
70
79
|
- [TaskWarrior](https://taskwarrior.org/)
|
|
71
80
|
- [Vikunja](https://www.vikunja.io)
|
|
72
81
|
- [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
|
|
82
|
+
- [Trello](https://www.trello.com)
|
|
73
83
|
|
|
74
|
-
### Currently Supported Time
|
|
84
|
+
### Currently Supported Time Tracker Backends
|
|
75
85
|
|
|
76
86
|
- CSV file
|
|
77
87
|
- [ActivityWatch](https://www.activitywatch.net)
|
|
@@ -79,53 +89,62 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
|
|
|
79
89
|
- [TimeWarrior](https://timewarrior.net)
|
|
80
90
|
|
|
81
91
|
|
|
92
|
+
## Installation (using pipx)
|
|
82
93
|
|
|
83
|
-
|
|
84
|
-
If you don't have pipx install
|
|
94
|
+
1. Run the following in terminal to install with dependencies:
|
|
85
95
|
```
|
|
86
|
-
sudo apt install pipx
|
|
96
|
+
sudo apt install pip pipx install gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf python3.12-venv libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
87
97
|
pipx ensurepath
|
|
88
|
-
|
|
98
|
+
pipx install NowFocus
|
|
99
|
+
```
|
|
100
|
+
2. Now run `nowfocus` and check for errors
|
|
89
101
|
|
|
102
|
+
3. Set up a keybinding (on Ubuntu or Linux Mint), open **Setting > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the **command** to `nowfocus`, and pick whatever key combo you'd like.
|
|
90
103
|
|
|
91
|
-
|
|
104
|
+
4. Add the following command to your startup applications: `nowfocus --force`
|
|
92
105
|
|
|
93
|
-
- Install dependencies:
|
|
94
|
-
```
|
|
95
|
-
sudo apt install gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf python3.12-venv pip libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
96
|
-
```
|
|
97
106
|
|
|
98
|
-
|
|
107
|
+
## Usage
|
|
99
108
|
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
python3 -m venv .venv/nowfocus
|
|
103
|
-
source .venv/nowfocus/bin/activate
|
|
104
|
-
```
|
|
109
|
+
#### Set up to-do lists and time trackers
|
|
105
110
|
|
|
106
|
-
|
|
107
|
-
```
|
|
108
|
-
pip install nowfocus
|
|
109
|
-
```
|
|
110
|
-
- Run `python3 -m what-am-doing` and check for errors
|
|
111
|
+
Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
|
|
111
112
|
|
|
112
|
-
|
|
113
|
+
#### Task Window Keybindings
|
|
113
114
|
|
|
115
|
+
- `F11` Toggle fullscreen
|
|
116
|
+
- `Esc` Close task window
|
|
117
|
+
- `Enter` Start top task (or make a new task with current search phrase if no results)
|
|
118
|
+
- `Ctrl + P` **Pause** current task
|
|
119
|
+
- `Ctrl + D` Pause current task and mark it **Done**
|
|
120
|
+
- `Ctrl + X` Cancel current task
|
|
121
|
+
- `Ctrl + N` **New** task
|
|
122
|
+
- `Ctrl + R` **Refresh** todolists
|
|
123
|
+
- `Ctrl + L` or `Ctrl + F` **Focus** the task search
|
|
124
|
+
|
|
125
|
+
#### Commandline Interface
|
|
126
|
+
|
|
127
|
+
- To raise the task window use simply: `nowfocus`
|
|
128
|
+
- If NowFocus has crashed or failed to shut down nicely use `nowfocus --force`
|
|
129
|
+
- To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
|
|
130
|
+
- To stop timing use `nowfocus stop`
|
|
131
|
+
- Start with verbose logging use: `nowfocus -l 3`
|
|
132
|
+
- Start with targeted verbose logging use: `nowfocus -s trello`
|
|
114
133
|
|
|
115
|
-
### Install from Source
|
|
116
134
|
|
|
117
|
-
|
|
118
|
-
- Change to `YOUR_INSTALL_PATH` directory with `cd /path/to/where/you/cloned/nowfocus`
|
|
135
|
+
## Development
|
|
119
136
|
|
|
120
|
-
|
|
121
|
-
- Run `python3 __main__.py` and check for errors
|
|
122
|
-
- Add the following to your startup applications: `bash -c "source .venv/nowfocus/bin/activate; python3 /YOUR_INSTALL_PATH/src/what-am-doing/__main__.py"`
|
|
137
|
+
### Install from Source
|
|
123
138
|
|
|
139
|
+
- Install dependencies from above.
|
|
140
|
+
- Clone this repo somewhere (referred to as `YOUR_INSTALL_PATH`)
|
|
141
|
+
- Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
|
|
142
|
+
- build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
|
|
143
|
+
- pipx install -e --force YOUR_INSTALL_PATH/monotask/
|
|
124
144
|
|
|
125
|
-
## Usage
|
|
126
145
|
|
|
127
|
-
- Open settings and add your to-do list and time tracker details
|
|
128
146
|
|
|
147
|
+
<!--
|
|
129
148
|
## Build Flatpak
|
|
130
149
|
|
|
131
150
|
```
|
|
@@ -134,23 +153,7 @@ python3 -m build
|
|
|
134
153
|
flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
|
|
135
154
|
flatpak run APPID
|
|
136
155
|
```
|
|
137
|
-
|
|
138
|
-
## Keybindings
|
|
139
|
-
|
|
140
|
-
To set up a keybinding to open your tasks on Ubuntu or Linux Mint, open **Setting > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the **command** to `/YOUR_INSTALL_PATH/src/what-am-doing/signal.sh`, and pick whatever key combo you'd like.
|
|
141
|
-
|
|
142
|
-
### Task Window Keybindings
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
- `F11` Toggle fullscreen
|
|
146
|
-
- `Esc` Close task window
|
|
147
|
-
- `Enter` Start top task (or make a new task with current search phrase if no results)
|
|
148
|
-
- `Ctrl + P` **Pause** current task
|
|
149
|
-
- `Ctrl + D` Pause current task and mark it **Done**
|
|
150
|
-
- `Ctrl + X` Cancel current task
|
|
151
|
-
- `Ctrl + N` **New** task
|
|
152
|
-
- `Ctrl + R` **Refresh** todolists
|
|
153
|
-
- `Ctrl + L` or `Ctrl + F` **Focus** the task search
|
|
156
|
+
-->
|
|
154
157
|
|
|
155
158
|
|
|
156
159
|
<!-- ## Contributing
|
|
@@ -717,7 +717,8 @@ class Application(Gtk.Application):
|
|
|
717
717
|
dbg("no handler for received signal",s='signals',l=3)
|
|
718
718
|
|
|
719
719
|
def check_pipe(self):
|
|
720
|
-
print("Listening to pipe at ",pipe_file)
|
|
720
|
+
# print("Listening to pipe at ",pipe_file)
|
|
721
|
+
|
|
721
722
|
try:
|
|
722
723
|
with open(pipe_file, "r") as pipe:
|
|
723
724
|
data = pipe.read().strip()
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
[x] 1 Do something excellent
|
|
2
|
+
Accomplish Worthwhile Things
|
|
3
|
+
|
|
4
|
+
Exercise
|
|
5
|
+
Running
|
|
6
|
+
Push-ups
|
|
7
|
+
Yoga
|
|
8
|
+
Set Up NowFocus
|
|
9
|
+
Open Settings
|
|
10
|
+
Add your real Todo List(s)
|
|
11
|
+
Set up your Time Tracker(s)
|
|
12
|
+
Notice how numbering tasks "hoists" them
|
|
13
|
+
Refresh List
|
|
@@ -41,17 +41,13 @@ class TaskWindow(Gtk.Window):
|
|
|
41
41
|
|
|
42
42
|
self.set_default_size(900,400)
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
self.search_cache_refresh_time = now()
|
|
44
|
+
self.search_cache_refresh_time = now().strftime("%Y-%m-%d %H:%M:%S")
|
|
46
45
|
self.search_cache = {}
|
|
47
46
|
self.task_rclick_menu = Gtk.Popover()
|
|
48
47
|
self.task_rclick_menu.set_name('task_rclick_menu')
|
|
49
48
|
|
|
50
49
|
self.num_initial_tasks = 25
|
|
51
50
|
|
|
52
|
-
# self.set_icon_from_file(os.path.abspath('icon/icon-0.svg')) # doesn't work
|
|
53
|
-
# self.set_icon(os.path.abspath('icon/icon-0.svg')) # doesn't work
|
|
54
|
-
|
|
55
51
|
self.app = app
|
|
56
52
|
session = app.session
|
|
57
53
|
self.set_name("TaskWindow") # set css id
|
|
@@ -184,19 +180,19 @@ class TaskWindow(Gtk.Window):
|
|
|
184
180
|
if todo['status']:
|
|
185
181
|
try:
|
|
186
182
|
openable = conf.todo_connectors[todo['type']].launch
|
|
187
|
-
if openable not in openables:
|
|
183
|
+
# if openable not in openables:
|
|
188
184
|
|
|
189
|
-
|
|
185
|
+
openables.append(openable)
|
|
190
186
|
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
187
|
+
openable_button = Gtk.Button(label=GLib.markup_escape_text(todo['label']))
|
|
188
|
+
|
|
189
|
+
openable_button.connect("clicked", lambda todo: openable(todo))
|
|
190
|
+
# openable_button.connect("clicked", openable, todo) # Doesn't work because of passing widget as first argument
|
|
191
|
+
openable_button.set_property("tooltip-text","Open (new) "+GLib.markup_escape_text(todo['label']))
|
|
192
|
+
self.buttons_box.add(openable_button)
|
|
197
193
|
|
|
198
194
|
except Exception as e:
|
|
199
|
-
dbg("error adding todo connector open() to task window ",e)
|
|
195
|
+
dbg("error adding todo connector open() to task window ",e, s='taskwindow')
|
|
200
196
|
|
|
201
197
|
|
|
202
198
|
# Old get_connector_openable version
|
|
@@ -204,7 +200,6 @@ class TaskWindow(Gtk.Window):
|
|
|
204
200
|
# if openable not in openables:
|
|
205
201
|
# openables.append(openable)
|
|
206
202
|
|
|
207
|
-
# # TODO: encode label
|
|
208
203
|
# openable_button = Gtk.Button(label=GLib.markup_escape_text(todolist['label']))
|
|
209
204
|
# openable_button.connect("clicked", get_connector_openable, todolist)
|
|
210
205
|
# openable_button.set_property("tooltip-text","Open "+GLib.markup_escape_text(todolist['label']))
|
|
@@ -252,7 +247,6 @@ class TaskWindow(Gtk.Window):
|
|
|
252
247
|
|
|
253
248
|
def refresh_search_cache(self,w = None):
|
|
254
249
|
self.search_cache = {}
|
|
255
|
-
# self.search_cache_refresh_time = now()
|
|
256
250
|
self.search_cache_refresh_time = now().strftime("%Y-%m-%d %H:%M:%S")
|
|
257
251
|
self.task_search(self.taskEntry)
|
|
258
252
|
|
|
@@ -397,7 +391,7 @@ class TaskWindow(Gtk.Window):
|
|
|
397
391
|
self.tasks_box.show_all()
|
|
398
392
|
self.shown_tasks.clear()
|
|
399
393
|
|
|
400
|
-
i = widget.get_text()
|
|
394
|
+
self.search_term = i = widget.get_text()
|
|
401
395
|
|
|
402
396
|
# utils.dbg({"task search":i},s='taskwindow')
|
|
403
397
|
if i in self.search_cache:
|
|
@@ -417,7 +411,7 @@ class TaskWindow(Gtk.Window):
|
|
|
417
411
|
total_duration += int(t['duration'])
|
|
418
412
|
|
|
419
413
|
if count < self.num_initial_tasks:
|
|
420
|
-
self.add_task_to_list(t
|
|
414
|
+
self.add_task_to_list(t)
|
|
421
415
|
else:
|
|
422
416
|
self.lazy_loadable_tasks[id] = t
|
|
423
417
|
|
|
@@ -428,9 +422,10 @@ class TaskWindow(Gtk.Window):
|
|
|
428
422
|
|
|
429
423
|
|
|
430
424
|
|
|
431
|
-
def add_task_to_list(self,t
|
|
425
|
+
def add_task_to_list(self,t):
|
|
432
426
|
|
|
433
427
|
try:
|
|
428
|
+
search_str = self.search_term
|
|
434
429
|
utils.dbg("add_task_to_list "+ str(t['extended_label']), "status",t['status'], s='taskwindow',l=3)
|
|
435
430
|
|
|
436
431
|
# self.shown_tasks[t['id']] = Gtk.Button() # Works but does not accept popovers
|
|
@@ -445,6 +440,7 @@ class TaskWindow(Gtk.Window):
|
|
|
445
440
|
extended_label = GLib.markup_escape_text(t['extended_label'],)
|
|
446
441
|
|
|
447
442
|
if len(search_str) > 1:
|
|
443
|
+
|
|
448
444
|
# fts5 match highlighting, not that good because it highlights the whole word rather than the matching part...
|
|
449
445
|
# extended_label = extended_label.replace('[[',"<b>").replace(']]',"</b>")
|
|
450
446
|
|
|
@@ -454,7 +450,7 @@ class TaskWindow(Gtk.Window):
|
|
|
454
450
|
extended_label += " ("+sec_to_time(t['duration'])+")"
|
|
455
451
|
|
|
456
452
|
if t['id'] in conf.user['task_commands'] and conf.user['task_commands'][t['id']]['status']:
|
|
457
|
-
extended_label += " ["+conf.user['task_commands'][t['id']]['command']+"]"
|
|
453
|
+
extended_label += " ["+GLib.markup_escape_text(conf.user['task_commands'][t['id']]['command'])+"]"
|
|
458
454
|
|
|
459
455
|
if t['priority']:
|
|
460
456
|
extended_label = str(t['priority']) +" "+ extended_label
|
nowfocus-0.2.0/README.md
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
# NowFocus
|
|
2
|
-
|
|
3
|
-
A simple, performance-oriented, activity tracker that flexibly connects multiple to-do lists with multiple time trackers and displays your current task and time spent in the status bar.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## Features
|
|
7
|
-
|
|
8
|
-
- Unlimited flexible combinations of to-do lists and time tracking systems
|
|
9
|
-
- Flexibly nested lists
|
|
10
|
-
- Inactivity detection that automatically pauses time tracking
|
|
11
|
-
- Pomodoro timer
|
|
12
|
-
- Task prioritization
|
|
13
|
-
- Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
|
|
14
|
-
- Randomness interrupt bell (optional) to keep you on track with tracking your time
|
|
15
|
-
- Fast, keyboard-driven, interface
|
|
16
|
-
- Offline to-do list cache
|
|
17
|
-
- Tested on Ubuntu and Linux Mint with Xorg and Wayland
|
|
18
|
-
|
|
19
|
-
### Currently Supported Todo Lists
|
|
20
|
-
|
|
21
|
-
- Simple text or markdown file with indentation based sub-lists
|
|
22
|
-
- Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
|
|
23
|
-
- [todotxt format](http://todotxt.org/)
|
|
24
|
-
- [TaskWarrior](https://taskwarrior.org/)
|
|
25
|
-
- [Vikunja](https://www.vikunja.io)
|
|
26
|
-
- [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
|
|
27
|
-
|
|
28
|
-
### Currently Supported Time Trackers
|
|
29
|
-
|
|
30
|
-
- CSV file
|
|
31
|
-
- [ActivityWatch](https://www.activitywatch.net)
|
|
32
|
-
- [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
|
|
33
|
-
- [TimeWarrior](https://timewarrior.net)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
<!-- ## Installation pipx
|
|
38
|
-
If you don't have pipx install
|
|
39
|
-
```
|
|
40
|
-
sudo apt install pipx
|
|
41
|
-
pipx ensurepath
|
|
42
|
-
``` -->
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
## Installation
|
|
46
|
-
|
|
47
|
-
- Install dependencies:
|
|
48
|
-
```
|
|
49
|
-
sudo apt install gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf python3.12-venv pip libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
<!-- python3-gi python3-gi-cairo -->
|
|
53
|
-
|
|
54
|
-
- Set up a python [venv](https://docs.python.org/3/tutorial/venv.html)
|
|
55
|
-
```
|
|
56
|
-
python3 -m venv .venv/nowfocus
|
|
57
|
-
source .venv/nowfocus/bin/activate
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
### Install with Pip
|
|
61
|
-
```
|
|
62
|
-
pip install nowfocus
|
|
63
|
-
```
|
|
64
|
-
- Run `python3 -m what-am-doing` and check for errors
|
|
65
|
-
|
|
66
|
-
- Add the following to your startup applications `bash -c "source .venv/nowfocus/bin/activate; python3 -m what-am-doing"`
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
### Install from Source
|
|
70
|
-
|
|
71
|
-
- Clone this repo into some out-of-the-way directory (referred to as `YOUR_INSTALL_PATH`)
|
|
72
|
-
- Change to `YOUR_INSTALL_PATH` directory with `cd /path/to/where/you/cloned/nowfocus`
|
|
73
|
-
|
|
74
|
-
- Install required python modules: `pip install -r requirements.txt`
|
|
75
|
-
- Run `python3 __main__.py` and check for errors
|
|
76
|
-
- Add the following to your startup applications: `bash -c "source .venv/nowfocus/bin/activate; python3 /YOUR_INSTALL_PATH/src/what-am-doing/__main__.py"`
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
## Usage
|
|
80
|
-
|
|
81
|
-
- Open settings and add your to-do list and time tracker details
|
|
82
|
-
|
|
83
|
-
## Build Flatpak
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
python3 -m build
|
|
87
|
-
# python3 flatpak-pip-generator --runtime=org.gnome.Sdk/x86_64/47 PACKAGE # run this for lots of stuff
|
|
88
|
-
flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
|
|
89
|
-
flatpak run APPID
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
## Keybindings
|
|
93
|
-
|
|
94
|
-
To set up a keybinding to open your tasks on Ubuntu or Linux Mint, open **Setting > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the **command** to `/YOUR_INSTALL_PATH/src/what-am-doing/signal.sh`, and pick whatever key combo you'd like.
|
|
95
|
-
|
|
96
|
-
### Task Window Keybindings
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
- `F11` Toggle fullscreen
|
|
100
|
-
- `Esc` Close task window
|
|
101
|
-
- `Enter` Start top task (or make a new task with current search phrase if no results)
|
|
102
|
-
- `Ctrl + P` **Pause** current task
|
|
103
|
-
- `Ctrl + D` Pause current task and mark it **Done**
|
|
104
|
-
- `Ctrl + X` Cancel current task
|
|
105
|
-
- `Ctrl + N` **New** task
|
|
106
|
-
- `Ctrl + R` **Refresh** todolists
|
|
107
|
-
- `Ctrl + L` or `Ctrl + F` **Focus** the task search
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
<!-- ## Contributing
|
|
111
|
-
Package it for your operating system.
|
|
112
|
-
Write a connector for your favorite to-do list or time tracker -->
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
Do something excellent
|
|
2
|
-
Accomplish Worthwhile Things
|
|
3
|
-
|
|
4
|
-
Exercise
|
|
5
|
-
Running
|
|
6
|
-
Push-ups
|
|
7
|
-
Yoga
|
|
8
|
-
Set Up NowFocus
|
|
9
|
-
1 Open Settings
|
|
10
|
-
3 Add your real Todo List(s)
|
|
11
|
-
2 Set up your Time Tracker(s)
|
|
12
|
-
4 Notice how numbering tasks "hoists" them
|
|
13
|
-
5 Refresh List
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
date,duration,project,task,start time
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/applications-engineering-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-checked-symbolic (2).svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/document-open-recent-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/format-unordered-list-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/media-playback-start-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic-2.svg
RENAMED
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic.svg
RENAMED
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-keyboard-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic-2.svg
RENAMED
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic.svg
RENAMED
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-system-symbolic.svg
RENAMED
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-time-symbolic.svg
RENAMED
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-wacom-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/preferences-system-time-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-more-horizontal-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-sort-descending-symbolic.svg
RENAMED
|
File without changes
|
{nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-tasks-unscheduled-symbolic.svg
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|