NowFocus 0.2.0__tar.gz → 0.2.3__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.
Files changed (116) hide show
  1. {nowfocus-0.2.0/src/NowFocus.egg-info → nowfocus-0.2.3}/PKG-INFO +62 -57
  2. nowfocus-0.2.3/README.md +117 -0
  3. {nowfocus-0.2.0 → nowfocus-0.2.3}/pyproject.toml +3 -3
  4. {nowfocus-0.2.0 → nowfocus-0.2.3/src/NowFocus.egg-info}/PKG-INFO +62 -57
  5. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/__main__.py +2 -1
  6. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/conf.py +1 -1
  7. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/task_window.py +16 -29
  8. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/utils.py +5 -5
  9. nowfocus-0.2.0/README.md +0 -112
  10. {nowfocus-0.2.0 → nowfocus-0.2.3}/LICENSE +0 -0
  11. {nowfocus-0.2.0 → nowfocus-0.2.3}/setup.cfg +0 -0
  12. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/NowFocus.egg-info/SOURCES.txt +0 -0
  13. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/NowFocus.egg-info/dependency_links.txt +0 -0
  14. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/NowFocus.egg-info/entry_points.txt +0 -0
  15. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/NowFocus.egg-info/requires.txt +0 -0
  16. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/NowFocus.egg-info/top_level.txt +0 -0
  17. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/__init__.py +0 -0
  18. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/activitywatch.py +0 -0
  19. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/caldav.py +0 -0
  20. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/csv.py +0 -0
  21. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/psc_timetracker.py +0 -0
  22. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/taskwarrior.py +0 -0
  23. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/timewarrior.py +0 -0
  24. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/todo_template.py +0 -0
  25. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/todotxt.py +0 -0
  26. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/trello.py +0 -0
  27. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/txt.py +0 -0
  28. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/connectors/vikunja.py +0 -0
  29. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/example-todo.txt +0 -0
  30. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/cancel.png +0 -0
  31. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/cancel.svg +0 -0
  32. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/edit.png +0 -0
  33. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/edit.svg +0 -0
  34. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-0.png +0 -0
  35. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-0.svg +0 -0
  36. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-1.svg +0 -0
  37. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-2.svg +0 -0
  38. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-3.svg +0 -0
  39. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-4.svg +0 -0
  40. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-5.svg +0 -0
  41. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-6.svg +0 -0
  42. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-7.svg +0 -0
  43. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-8.svg +0 -0
  44. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon-9.svg +0 -0
  45. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon.png +0 -0
  46. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/icon.svg +0 -0
  47. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/mark-done.png +0 -0
  48. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/mark-done.svg +0 -0
  49. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/pause.png +0 -0
  50. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/pause.svg +0 -0
  51. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/settings.png +0 -0
  52. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/settings.svg +0 -0
  53. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/action-unavailable-symbolic.svg +0 -0
  54. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/applications-engineering-symbolic.svg +0 -0
  55. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/background-selected-symbolic.svg +0 -0
  56. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/cancel-operation-symbolic.svg +0 -0
  57. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/checkbox-checked-symbolic (2).svg +0 -0
  58. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/checkbox-checked-symbolic.svg +0 -0
  59. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/checkbox-mixed-symbolic (2).svg +0 -0
  60. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/checkbox-mixed-symbolic.svg +0 -0
  61. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/checkbox-symbolic (2).svg +0 -0
  62. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/checkbox-symbolic.svg +0 -0
  63. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/clock-app-symbolic.svg +0 -0
  64. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/document-edit-symbolic.svg +0 -0
  65. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/document-new-symbolic.svg +0 -0
  66. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/document-open-recent-symbolic.svg +0 -0
  67. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/edit-find-symbolic.svg +0 -0
  68. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/edit-symbolic.svg +0 -0
  69. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/filter-flagged-symbolic.svg +0 -0
  70. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/format-unordered-list-symbolic.svg +0 -0
  71. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/help-about-symbolic.svg +0 -0
  72. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/list-add-symbolic.svg +0 -0
  73. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/list-remove-symbolic.svg +0 -0
  74. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/media-playback-pause.svg +0 -0
  75. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/media-playback-start-symbolic.svg +0 -0
  76. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/no-event-symbolic.svg +0 -0
  77. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/object-select-symbolic.svg +0 -0
  78. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic-2.svg +0 -0
  79. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic.svg +0 -0
  80. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-keyboard-symbolic.svg +0 -0
  81. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic (2).svg +0 -0
  82. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic.svg +0 -0
  83. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic-2.svg +0 -0
  84. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic.svg +0 -0
  85. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-system-symbolic.svg +0 -0
  86. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-time-symbolic.svg +0 -0
  87. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.Settings-wacom-symbolic.svg +0 -0
  88. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/org.gnome.clocks-symbolic.svg +0 -0
  89. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/pause-large-symbolic.svg +0 -0
  90. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/preferences-system-time-symbolic.svg +0 -0
  91. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/process-stop-symbolic.svg +0 -0
  92. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/selection-checked.svg +0 -0
  93. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/software-installed-symbolic.svg +0 -0
  94. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/stopwatch-symbolic.svg +0 -0
  95. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/system-settings-symbolic.svg +0 -0
  96. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/timer-sand-symbolic.svg +0 -0
  97. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/timer-symbolic.svg +0 -0
  98. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/user-trash-symbolic (2).svg +0 -0
  99. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/user-trash-symbolic.svg +0 -0
  100. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/view-fullscreen-symbolic.svg +0 -0
  101. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/view-more-horizontal-symbolic.svg +0 -0
  102. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/view-more-symbolic.svg +0 -0
  103. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/view-restore-symbolic.svg +0 -0
  104. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/view-sort-ascending-symbolic.svg +0 -0
  105. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/view-sort-descending-symbolic.svg +0 -0
  106. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/icon/unused/view-tasks-unscheduled-symbolic.svg +0 -0
  107. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/new_task_dialog.py +0 -0
  108. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/runner.sh +0 -0
  109. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/session_edit_dialog.py +0 -0
  110. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/session_options.py +0 -0
  111. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/sessions.csv +0 -0
  112. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/settings.py +0 -0
  113. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/sound/bell-xylophone-g.mp3 +0 -0
  114. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/sound/dinner-bell.mp3 +0 -0
  115. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/sound/xylophone-chord.mp3 +0 -0
  116. {nowfocus-0.2.0 → nowfocus-0.2.3}/src/nowfocus/styles.css +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: NowFocus
3
- Version: 0.2.0
3
+ Version: 0.2.3
4
4
  Summary: NowFocus: the open source task-tracking self-control panel.
5
- Author: Altruist Enterprises
6
- Project-URL: Homepage, https://gitlab.com/GitFr33/what-am-i-doing
5
+ Author: GitFr33
6
+ Project-URL: Homepage, https://gitlab.com/GitFr33/NowFocus
7
7
  Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Operating System :: OS Independent
9
9
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
@@ -44,25 +44,36 @@ Requires-Dist: vobject
44
44
  Requires-Dist: x-wr-timezone
45
45
  Dynamic: license-file
46
46
 
47
- # NowFocus
47
+ <div align="center"><img src="nowfocus.svg" width="60" align="center">
48
48
 
49
- 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.
49
+ # *NowFocus* <br> Open-source task timer for linux
50
50
 
51
+ **Avoid multifailing. Master your to-do lists. Track your time.**
51
52
 
52
- ## Features
53
+ </div>
54
+ NowFocus is a clean, keyboard-driven project time 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.
53
55
 
56
+ ## Features
54
57
  - Unlimited flexible combinations of to-do lists and time tracking systems
55
- - Flexibly nested lists
58
+ - Infinitely nestable lists
56
59
  - Inactivity detection that automatically pauses time tracking
57
60
  - Pomodoro timer
58
61
  - Task prioritization
59
62
  - Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
60
63
  - Randomness interrupt bell (optional) to keep you on track with tracking your time
61
- - Fast, keyboard-driven, interface
64
+ - Keyboard-driven interface
62
65
  - Offline to-do list cache
63
- - Tested on Ubuntu and Linux Mint with Xorg and Wayland
66
+ - CLI
67
+ - Run a command (or launch an application) when a task is started
68
+
69
+
70
+ <img src="Screenshot-25-09-23-11-42-56.webp" width="500">
71
+ <img src="Screenshot-25-09-23-11-46-14.webp" width="400">
72
+ <img src="Screenshot-25-09-23-11-53-22.webp" width="400">
73
+
74
+ <br>
64
75
 
65
- ### Currently Supported Todo Lists
76
+ ### Currently Supported To-do List Backends
66
77
 
67
78
  - Simple text or markdown file with indentation based sub-lists
68
79
  - Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
@@ -70,8 +81,9 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
70
81
  - [TaskWarrior](https://taskwarrior.org/)
71
82
  - [Vikunja](https://www.vikunja.io)
72
83
  - [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
84
+ - [Trello](https://www.trello.com)
73
85
 
74
- ### Currently Supported Time Trackers
86
+ ### Currently Supported Time Tracker Backends
75
87
 
76
88
  - CSV file
77
89
  - [ActivityWatch](https://www.activitywatch.net)
@@ -79,53 +91,62 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
79
91
  - [TimeWarrior](https://timewarrior.net)
80
92
 
81
93
 
94
+ ## Installation (using pipx)
82
95
 
83
- <!-- ## Installation pipx
84
- If you don't have pipx install
96
+ 1. Run the following in terminal to install with dependencies:
85
97
  ```
86
- sudo apt install pipx
98
+ 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
99
  pipx ensurepath
88
- ``` -->
100
+ pipx install NowFocus
101
+ ```
102
+ 2. Now run `nowfocus` and check for errors
89
103
 
104
+ 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
105
 
91
- ## Installation
106
+ 4. Add the following command to your startup applications: `nowfocus --force`
92
107
 
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
108
 
98
- <!-- python3-gi python3-gi-cairo -->
109
+ ## Usage
99
110
 
100
- - Set up a python [venv](https://docs.python.org/3/tutorial/venv.html)
101
- ```
102
- python3 -m venv .venv/nowfocus
103
- source .venv/nowfocus/bin/activate
104
- ```
111
+ #### Set up to-do lists and time trackers
105
112
 
106
- ### Install with Pip
107
- ```
108
- pip install nowfocus
109
- ```
110
- - Run `python3 -m what-am-doing` and check for errors
113
+ Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
114
+
115
+ #### Task Window Keybindings
116
+
117
+ - `F11` Toggle fullscreen
118
+ - `Esc` Close task window
119
+ - `Enter` Start top task (or make a new task with current search phrase if no results)
120
+ - `Ctrl + P` **Pause** current task
121
+ - `Ctrl + D` Pause current task and mark it **Done**
122
+ - `Ctrl + X` Cancel current task
123
+ - `Ctrl + N` **New** task
124
+ - `Ctrl + R` **Refresh** todolists
125
+ - `Ctrl + L` or `Ctrl + F` **Focus** the task search
111
126
 
112
- - Add the following to your startup applications `bash -c "source .venv/nowfocus/bin/activate; python3 -m what-am-doing"`
127
+ #### Commandline Interface
113
128
 
129
+ - To raise the task window use simply: `nowfocus`
130
+ - If NowFocus has crashed or failed to shut down nicely use `nowfocus --force`
131
+ - To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
132
+ - To stop timing use `nowfocus stop`
133
+ - Start with verbose logging use: `nowfocus -l 3`
134
+ - Start with targeted verbose logging use: `nowfocus -s trello`
114
135
 
115
- ### Install from Source
116
136
 
117
- - Clone this repo into some out-of-the-way directory (referred to as `YOUR_INSTALL_PATH`)
118
- - Change to `YOUR_INSTALL_PATH` directory with `cd /path/to/where/you/cloned/nowfocus`
137
+ ## Development
119
138
 
120
- - Install required python modules: `pip install -r requirements.txt`
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"`
139
+ ### Install from Source
123
140
 
141
+ - Install dependencies from above.
142
+ - Clone this repo somewhere (referred to as `YOUR_INSTALL_PATH`)
143
+ - Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
144
+ - build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
145
+ - pipx install -e --force YOUR_INSTALL_PATH/monotask/
124
146
 
125
- ## Usage
126
147
 
127
- - Open settings and add your to-do list and time tracker details
128
148
 
149
+ <!--
129
150
  ## Build Flatpak
130
151
 
131
152
  ```
@@ -134,23 +155,7 @@ python3 -m build
134
155
  flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
135
156
  flatpak run APPID
136
157
  ```
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
158
+ -->
154
159
 
155
160
 
156
161
  <!-- ## Contributing
@@ -0,0 +1,117 @@
1
+ <div align="center"><img src="nowfocus.svg" width="60" align="center">
2
+
3
+ # *NowFocus* <br> Open-source task timer for linux
4
+
5
+ **Avoid multifailing. Master your to-do lists. Track your time.**
6
+
7
+ </div>
8
+ NowFocus is a clean, keyboard-driven project time 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.
9
+
10
+ ## Features
11
+ - Unlimited flexible combinations of to-do lists and time tracking systems
12
+ - Infinitely nestable lists
13
+ - Inactivity detection that automatically pauses time tracking
14
+ - Pomodoro timer
15
+ - Task prioritization
16
+ - Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
17
+ - Randomness interrupt bell (optional) to keep you on track with tracking your time
18
+ - Keyboard-driven interface
19
+ - Offline to-do list cache
20
+ - CLI
21
+ - Run a command (or launch an application) when a task is started
22
+
23
+
24
+ <img src="Screenshot-25-09-23-11-42-56.webp" width="500">
25
+ <img src="Screenshot-25-09-23-11-46-14.webp" width="400">
26
+ <img src="Screenshot-25-09-23-11-53-22.webp" width="400">
27
+
28
+ <br>
29
+
30
+ ### Currently Supported To-do List Backends
31
+
32
+ - Simple text or markdown file with indentation based sub-lists
33
+ - Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
34
+ - [todotxt format](http://todotxt.org/)
35
+ - [TaskWarrior](https://taskwarrior.org/)
36
+ - [Vikunja](https://www.vikunja.io)
37
+ - [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
38
+ - [Trello](https://www.trello.com)
39
+
40
+ ### Currently Supported Time Tracker Backends
41
+
42
+ - CSV file
43
+ - [ActivityWatch](https://www.activitywatch.net)
44
+ - [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
45
+ - [TimeWarrior](https://timewarrior.net)
46
+
47
+
48
+ ## Installation (using pipx)
49
+
50
+ 1. Run the following in terminal to install with dependencies:
51
+ ```
52
+ 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
53
+ pipx ensurepath
54
+ pipx install NowFocus
55
+ ```
56
+ 2. Now run `nowfocus` and check for errors
57
+
58
+ 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.
59
+
60
+ 4. Add the following command to your startup applications: `nowfocus --force`
61
+
62
+
63
+ ## Usage
64
+
65
+ #### Set up to-do lists and time trackers
66
+
67
+ Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
68
+
69
+ #### Task Window Keybindings
70
+
71
+ - `F11` Toggle fullscreen
72
+ - `Esc` Close task window
73
+ - `Enter` Start top task (or make a new task with current search phrase if no results)
74
+ - `Ctrl + P` **Pause** current task
75
+ - `Ctrl + D` Pause current task and mark it **Done**
76
+ - `Ctrl + X` Cancel current task
77
+ - `Ctrl + N` **New** task
78
+ - `Ctrl + R` **Refresh** todolists
79
+ - `Ctrl + L` or `Ctrl + F` **Focus** the task search
80
+
81
+ #### Commandline Interface
82
+
83
+ - To raise the task window use simply: `nowfocus`
84
+ - If NowFocus has crashed or failed to shut down nicely use `nowfocus --force`
85
+ - To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
86
+ - To stop timing use `nowfocus stop`
87
+ - Start with verbose logging use: `nowfocus -l 3`
88
+ - Start with targeted verbose logging use: `nowfocus -s trello`
89
+
90
+
91
+ ## Development
92
+
93
+ ### Install from Source
94
+
95
+ - Install dependencies from above.
96
+ - Clone this repo somewhere (referred to as `YOUR_INSTALL_PATH`)
97
+ - Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
98
+ - build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
99
+ - pipx install -e --force YOUR_INSTALL_PATH/monotask/
100
+
101
+
102
+
103
+ <!--
104
+ ## Build Flatpak
105
+
106
+ ```
107
+ python3 -m build
108
+ # python3 flatpak-pip-generator --runtime=org.gnome.Sdk/x86_64/47 PACKAGE # run this for lots of stuff
109
+ flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
110
+ flatpak run APPID
111
+ ```
112
+ -->
113
+
114
+
115
+ <!-- ## Contributing
116
+ Package it for your operating system.
117
+ Write a connector for your favorite to-do list or time tracker -->
@@ -1,8 +1,8 @@
1
1
  [project]
2
2
  name = "NowFocus"
3
- version = "0.2.0"
3
+ version = "0.2.3"
4
4
  authors = [
5
- { name="Altruist Enterprises" },
5
+ { name="GitFr33" },
6
6
  ]
7
7
  description = "NowFocus: the open source task-tracking self-control panel."
8
8
  readme = "README.md"
@@ -55,7 +55,7 @@ dependencies = [
55
55
  ]
56
56
 
57
57
  [project.urls]
58
- Homepage = "https://gitlab.com/GitFr33/what-am-i-doing"
58
+ Homepage = "https://gitlab.com/GitFr33/NowFocus"
59
59
 
60
60
  [project.gui-scripts]
61
61
  nowfocus = "nowfocus.__main__:startup"
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: NowFocus
3
- Version: 0.2.0
3
+ Version: 0.2.3
4
4
  Summary: NowFocus: the open source task-tracking self-control panel.
5
- Author: Altruist Enterprises
6
- Project-URL: Homepage, https://gitlab.com/GitFr33/what-am-i-doing
5
+ Author: GitFr33
6
+ Project-URL: Homepage, https://gitlab.com/GitFr33/NowFocus
7
7
  Classifier: Programming Language :: Python :: 3
8
8
  Classifier: Operating System :: OS Independent
9
9
  Classifier: License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)
@@ -44,25 +44,36 @@ Requires-Dist: vobject
44
44
  Requires-Dist: x-wr-timezone
45
45
  Dynamic: license-file
46
46
 
47
- # NowFocus
47
+ <div align="center"><img src="nowfocus.svg" width="60" align="center">
48
48
 
49
- 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.
49
+ # *NowFocus* <br> Open-source task timer for linux
50
50
 
51
+ **Avoid multifailing. Master your to-do lists. Track your time.**
51
52
 
52
- ## Features
53
+ </div>
54
+ NowFocus is a clean, keyboard-driven project time 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.
53
55
 
56
+ ## Features
54
57
  - Unlimited flexible combinations of to-do lists and time tracking systems
55
- - Flexibly nested lists
58
+ - Infinitely nestable lists
56
59
  - Inactivity detection that automatically pauses time tracking
57
60
  - Pomodoro timer
58
61
  - Task prioritization
59
62
  - Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
60
63
  - Randomness interrupt bell (optional) to keep you on track with tracking your time
61
- - Fast, keyboard-driven, interface
64
+ - Keyboard-driven interface
62
65
  - Offline to-do list cache
63
- - Tested on Ubuntu and Linux Mint with Xorg and Wayland
66
+ - CLI
67
+ - Run a command (or launch an application) when a task is started
68
+
69
+
70
+ <img src="Screenshot-25-09-23-11-42-56.webp" width="500">
71
+ <img src="Screenshot-25-09-23-11-46-14.webp" width="400">
72
+ <img src="Screenshot-25-09-23-11-53-22.webp" width="400">
73
+
74
+ <br>
64
75
 
65
- ### Currently Supported Todo Lists
76
+ ### Currently Supported To-do List Backends
66
77
 
67
78
  - Simple text or markdown file with indentation based sub-lists
68
79
  - Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
@@ -70,8 +81,9 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
70
81
  - [TaskWarrior](https://taskwarrior.org/)
71
82
  - [Vikunja](https://www.vikunja.io)
72
83
  - [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
84
+ - [Trello](https://www.trello.com)
73
85
 
74
- ### Currently Supported Time Trackers
86
+ ### Currently Supported Time Tracker Backends
75
87
 
76
88
  - CSV file
77
89
  - [ActivityWatch](https://www.activitywatch.net)
@@ -79,53 +91,62 @@ A simple, performance-oriented, activity tracker that flexibly connects multiple
79
91
  - [TimeWarrior](https://timewarrior.net)
80
92
 
81
93
 
94
+ ## Installation (using pipx)
82
95
 
83
- <!-- ## Installation pipx
84
- If you don't have pipx install
96
+ 1. Run the following in terminal to install with dependencies:
85
97
  ```
86
- sudo apt install pipx
98
+ 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
99
  pipx ensurepath
88
- ``` -->
100
+ pipx install NowFocus
101
+ ```
102
+ 2. Now run `nowfocus` and check for errors
89
103
 
104
+ 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
105
 
91
- ## Installation
106
+ 4. Add the following command to your startup applications: `nowfocus --force`
92
107
 
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
108
 
98
- <!-- python3-gi python3-gi-cairo -->
109
+ ## Usage
99
110
 
100
- - Set up a python [venv](https://docs.python.org/3/tutorial/venv.html)
101
- ```
102
- python3 -m venv .venv/nowfocus
103
- source .venv/nowfocus/bin/activate
104
- ```
111
+ #### Set up to-do lists and time trackers
105
112
 
106
- ### Install with Pip
107
- ```
108
- pip install nowfocus
109
- ```
110
- - Run `python3 -m what-am-doing` and check for errors
113
+ Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
114
+
115
+ #### Task Window Keybindings
116
+
117
+ - `F11` Toggle fullscreen
118
+ - `Esc` Close task window
119
+ - `Enter` Start top task (or make a new task with current search phrase if no results)
120
+ - `Ctrl + P` **Pause** current task
121
+ - `Ctrl + D` Pause current task and mark it **Done**
122
+ - `Ctrl + X` Cancel current task
123
+ - `Ctrl + N` **New** task
124
+ - `Ctrl + R` **Refresh** todolists
125
+ - `Ctrl + L` or `Ctrl + F` **Focus** the task search
111
126
 
112
- - Add the following to your startup applications `bash -c "source .venv/nowfocus/bin/activate; python3 -m what-am-doing"`
127
+ #### Commandline Interface
113
128
 
129
+ - To raise the task window use simply: `nowfocus`
130
+ - If NowFocus has crashed or failed to shut down nicely use `nowfocus --force`
131
+ - To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
132
+ - To stop timing use `nowfocus stop`
133
+ - Start with verbose logging use: `nowfocus -l 3`
134
+ - Start with targeted verbose logging use: `nowfocus -s trello`
114
135
 
115
- ### Install from Source
116
136
 
117
- - Clone this repo into some out-of-the-way directory (referred to as `YOUR_INSTALL_PATH`)
118
- - Change to `YOUR_INSTALL_PATH` directory with `cd /path/to/where/you/cloned/nowfocus`
137
+ ## Development
119
138
 
120
- - Install required python modules: `pip install -r requirements.txt`
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"`
139
+ ### Install from Source
123
140
 
141
+ - Install dependencies from above.
142
+ - Clone this repo somewhere (referred to as `YOUR_INSTALL_PATH`)
143
+ - Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
144
+ - build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
145
+ - pipx install -e --force YOUR_INSTALL_PATH/monotask/
124
146
 
125
- ## Usage
126
147
 
127
- - Open settings and add your to-do list and time tracker details
128
148
 
149
+ <!--
129
150
  ## Build Flatpak
130
151
 
131
152
  ```
@@ -134,23 +155,7 @@ python3 -m build
134
155
  flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
135
156
  flatpak run APPID
136
157
  ```
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
158
+ -->
154
159
 
155
160
 
156
161
  <!-- ## 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()
@@ -21,7 +21,7 @@ user_settings_dir = GLib.get_user_config_dir()+"/"+app_id
21
21
  Path(user_settings_dir).mkdir(parents=True, exist_ok=True)
22
22
 
23
23
  debug_level = 1 # dev value
24
- debug_systems = ['todoloading']
24
+ debug_systems = []
25
25
 
26
26
  # key and type must be the same, (Seems redundant but it's is quite helpful)
27
27
  connectors = {
@@ -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,31 +180,21 @@ 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
- openables.append(openable)
185
+ openables.append(openable)
190
186
 
191
- openable_button = Gtk.Button(label=GLib.markup_escape_text(todo['label']))
192
- lamb
193
- openable_button.connect("clicked", lambda todo: openable(todo)) # Doesn't work because of passing widget as first argument
194
- # openable_button.connect("clicked", openable, todo) # Doesn't work because of passing widget as first argument
195
- openable_button.set_property("tooltip-text","Open (new) "+GLib.markup_escape_text(todo['label']))
196
- self.buttons_box.add(openable_button)
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
- # Old get_connector_openable version
203
- # openable = get_connector_openable(None, todolist,False)
204
- # if openable not in openables:
205
- # openables.append(openable)
206
-
207
- # # TODO: encode label
208
- # openable_button = Gtk.Button(label=GLib.markup_escape_text(todolist['label']))
209
- # openable_button.connect("clicked", get_connector_openable, todolist)
210
- # openable_button.set_property("tooltip-text","Open "+GLib.markup_escape_text(todolist['label']))
211
- # self.buttons_box.add(openable_button)
212
198
 
213
199
 
214
200
  self.new_task_button = Gtk.Button(label="New Task")
@@ -252,7 +238,6 @@ class TaskWindow(Gtk.Window):
252
238
 
253
239
  def refresh_search_cache(self,w = None):
254
240
  self.search_cache = {}
255
- # self.search_cache_refresh_time = now()
256
241
  self.search_cache_refresh_time = now().strftime("%Y-%m-%d %H:%M:%S")
257
242
  self.task_search(self.taskEntry)
258
243
 
@@ -397,7 +382,7 @@ class TaskWindow(Gtk.Window):
397
382
  self.tasks_box.show_all()
398
383
  self.shown_tasks.clear()
399
384
 
400
- i = widget.get_text()
385
+ self.search_term = i = widget.get_text()
401
386
 
402
387
  # utils.dbg({"task search":i},s='taskwindow')
403
388
  if i in self.search_cache:
@@ -417,7 +402,7 @@ class TaskWindow(Gtk.Window):
417
402
  total_duration += int(t['duration'])
418
403
 
419
404
  if count < self.num_initial_tasks:
420
- self.add_task_to_list(t,i)
405
+ self.add_task_to_list(t)
421
406
  else:
422
407
  self.lazy_loadable_tasks[id] = t
423
408
 
@@ -428,9 +413,10 @@ class TaskWindow(Gtk.Window):
428
413
 
429
414
 
430
415
 
431
- def add_task_to_list(self,t,search_str = ''):
416
+ def add_task_to_list(self,t):
432
417
 
433
418
  try:
419
+ search_str = self.search_term
434
420
  utils.dbg("add_task_to_list "+ str(t['extended_label']), "status",t['status'], s='taskwindow',l=3)
435
421
 
436
422
  # self.shown_tasks[t['id']] = Gtk.Button() # Works but does not accept popovers
@@ -445,6 +431,7 @@ class TaskWindow(Gtk.Window):
445
431
  extended_label = GLib.markup_escape_text(t['extended_label'],)
446
432
 
447
433
  if len(search_str) > 1:
434
+
448
435
  # fts5 match highlighting, not that good because it highlights the whole word rather than the matching part...
449
436
  # extended_label = extended_label.replace('[[',"<b>").replace(']]',"</b>")
450
437
 
@@ -454,7 +441,7 @@ class TaskWindow(Gtk.Window):
454
441
  extended_label += " ("+sec_to_time(t['duration'])+")"
455
442
 
456
443
  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']+"]"
444
+ extended_label += " ["+GLib.markup_escape_text(conf.user['task_commands'][t['id']]['command'])+"]"
458
445
 
459
446
  if t['priority']:
460
447
  extended_label = str(t['priority']) +" "+ extended_label
@@ -578,12 +578,12 @@ def db_set_item(i,table = "tasks"):
578
578
  if table == 'tasks':
579
579
  reindex(raw)
580
580
 
581
- def db_edit_session(session, column, new_value):
582
- dbg("db_edit_session", session, 'column', column, 'new value', new_value)
581
+ # def db_edit_session(session, column, new_value):
582
+ # dbg("db_edit_session", session, 'column', column, 'new value', new_value)
583
583
 
584
- db_query("UPDATE session set ? = ? WHERE start_time = ? AND extended_Label = ? LIMIT 1",(column, new_value, session['start_time'], session['extended_label']))
584
+ # db_query("UPDATE session set ? = ? WHERE start_time = ? AND extended_Label = ? LIMIT 1",(column, new_value, session['start_time'], session['extended_label']))
585
585
 
586
- db_query("select * FROM sessions WHERE start_time = ? AND extended_Label = ? ",(session['start_time'], session['extended_label']))
586
+ # db_query("select * FROM sessions WHERE start_time = ? AND extended_Label = ? ",(session['start_time'], session['extended_label']))
587
587
 
588
588
  def db_set_todolist(todolist_id,lists,tasks):
589
589
  # print('db_set_todolist params: \ntodolist_id: ',todolist_id,'lists: ',lists,'tasks: ',tasks)
@@ -638,7 +638,7 @@ def db_cleanup(widget = None):
638
638
  # print("Active todolist ids",ids)
639
639
 
640
640
  # Delete unlinked tasks
641
- db_query('DELETE FROM tasks WHERE todolist NOT IN (%s)' % ','.join('?'*len(ids)),ids)
641
+ # db_query('DELETE FROM tasks WHERE todolist NOT IN (%s)' % ','.join('?'*len(ids)),ids)
642
642
  # print(len(orphaned_tasks),"orphaned_tasks",orphaned_tasks)
643
643
  # orphaned_tasks = db_query('SELECT id, extended_label, todolist FROM tasks WHERE todolist NOT IN (%s)' % ','.join('?'*len(ids)),ids)
644
644
  # print(len(orphaned_tasks),"orphaned_tasks",orphaned_tasks)
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 -->
File without changes
File without changes