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.
Files changed (118) hide show
  1. {nowfocus-0.2.0/src/NowFocus.egg-info → nowfocus-0.2.1}/PKG-INFO +58 -55
  2. nowfocus-0.2.1/README.md +115 -0
  3. {nowfocus-0.2.0 → nowfocus-0.2.1}/pyproject.toml +1 -1
  4. {nowfocus-0.2.0 → nowfocus-0.2.1/src/NowFocus.egg-info}/PKG-INFO +58 -55
  5. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/__main__.py +2 -1
  6. nowfocus-0.2.1/src/nowfocus/example-todo.txt +13 -0
  7. nowfocus-0.2.1/src/nowfocus/sessions.csv +4 -0
  8. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/task_window.py +16 -20
  9. nowfocus-0.2.0/README.md +0 -112
  10. nowfocus-0.2.0/src/nowfocus/example-todo.txt +0 -13
  11. nowfocus-0.2.0/src/nowfocus/sessions.csv +0 -1
  12. {nowfocus-0.2.0 → nowfocus-0.2.1}/LICENSE +0 -0
  13. {nowfocus-0.2.0 → nowfocus-0.2.1}/setup.cfg +0 -0
  14. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/SOURCES.txt +0 -0
  15. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/dependency_links.txt +0 -0
  16. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/entry_points.txt +0 -0
  17. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/requires.txt +0 -0
  18. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/NowFocus.egg-info/top_level.txt +0 -0
  19. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/__init__.py +0 -0
  20. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/conf.py +0 -0
  21. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/activitywatch.py +0 -0
  22. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/caldav.py +0 -0
  23. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/csv.py +0 -0
  24. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/psc_timetracker.py +0 -0
  25. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/taskwarrior.py +0 -0
  26. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/timewarrior.py +0 -0
  27. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/todo_template.py +0 -0
  28. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/todotxt.py +0 -0
  29. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/trello.py +0 -0
  30. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/txt.py +0 -0
  31. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/connectors/vikunja.py +0 -0
  32. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/cancel.png +0 -0
  33. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/cancel.svg +0 -0
  34. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/edit.png +0 -0
  35. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/edit.svg +0 -0
  36. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-0.png +0 -0
  37. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-0.svg +0 -0
  38. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-1.svg +0 -0
  39. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-2.svg +0 -0
  40. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-3.svg +0 -0
  41. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-4.svg +0 -0
  42. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-5.svg +0 -0
  43. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-6.svg +0 -0
  44. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-7.svg +0 -0
  45. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-8.svg +0 -0
  46. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon-9.svg +0 -0
  47. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon.png +0 -0
  48. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/icon.svg +0 -0
  49. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/mark-done.png +0 -0
  50. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/mark-done.svg +0 -0
  51. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/pause.png +0 -0
  52. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/pause.svg +0 -0
  53. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/settings.png +0 -0
  54. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/settings.svg +0 -0
  55. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/action-unavailable-symbolic.svg +0 -0
  56. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/applications-engineering-symbolic.svg +0 -0
  57. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/background-selected-symbolic.svg +0 -0
  58. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/cancel-operation-symbolic.svg +0 -0
  59. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-checked-symbolic (2).svg +0 -0
  60. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-checked-symbolic.svg +0 -0
  61. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-mixed-symbolic (2).svg +0 -0
  62. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-mixed-symbolic.svg +0 -0
  63. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-symbolic (2).svg +0 -0
  64. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/checkbox-symbolic.svg +0 -0
  65. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/clock-app-symbolic.svg +0 -0
  66. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/document-edit-symbolic.svg +0 -0
  67. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/document-new-symbolic.svg +0 -0
  68. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/document-open-recent-symbolic.svg +0 -0
  69. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/edit-find-symbolic.svg +0 -0
  70. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/edit-symbolic.svg +0 -0
  71. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/filter-flagged-symbolic.svg +0 -0
  72. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/format-unordered-list-symbolic.svg +0 -0
  73. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/help-about-symbolic.svg +0 -0
  74. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/list-add-symbolic.svg +0 -0
  75. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/list-remove-symbolic.svg +0 -0
  76. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/media-playback-pause.svg +0 -0
  77. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/media-playback-start-symbolic.svg +0 -0
  78. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/no-event-symbolic.svg +0 -0
  79. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/object-select-symbolic.svg +0 -0
  80. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic-2.svg +0 -0
  81. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic.svg +0 -0
  82. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-keyboard-symbolic.svg +0 -0
  83. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic (2).svg +0 -0
  84. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic.svg +0 -0
  85. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic-2.svg +0 -0
  86. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic.svg +0 -0
  87. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-system-symbolic.svg +0 -0
  88. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-time-symbolic.svg +0 -0
  89. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.Settings-wacom-symbolic.svg +0 -0
  90. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/org.gnome.clocks-symbolic.svg +0 -0
  91. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/pause-large-symbolic.svg +0 -0
  92. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/preferences-system-time-symbolic.svg +0 -0
  93. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/process-stop-symbolic.svg +0 -0
  94. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/selection-checked.svg +0 -0
  95. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/software-installed-symbolic.svg +0 -0
  96. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/stopwatch-symbolic.svg +0 -0
  97. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/system-settings-symbolic.svg +0 -0
  98. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/timer-sand-symbolic.svg +0 -0
  99. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/timer-symbolic.svg +0 -0
  100. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/user-trash-symbolic (2).svg +0 -0
  101. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/user-trash-symbolic.svg +0 -0
  102. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-fullscreen-symbolic.svg +0 -0
  103. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-more-horizontal-symbolic.svg +0 -0
  104. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-more-symbolic.svg +0 -0
  105. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-restore-symbolic.svg +0 -0
  106. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-sort-ascending-symbolic.svg +0 -0
  107. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-sort-descending-symbolic.svg +0 -0
  108. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/icon/unused/view-tasks-unscheduled-symbolic.svg +0 -0
  109. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/new_task_dialog.py +0 -0
  110. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/runner.sh +0 -0
  111. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/session_edit_dialog.py +0 -0
  112. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/session_options.py +0 -0
  113. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/settings.py +0 -0
  114. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/sound/bell-xylophone-g.mp3 +0 -0
  115. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/sound/dinner-bell.mp3 +0 -0
  116. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/sound/xylophone-chord.mp3 +0 -0
  117. {nowfocus-0.2.0 → nowfocus-0.2.1}/src/nowfocus/styles.css +0 -0
  118. {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.0
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
- # NowFocus
47
+ <img src="nowfocus.svg" style="float: left; width:120px;">
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
+ **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
- - Flexibly nested lists
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
- - Fast, keyboard-driven, interface
62
+ - Keyboard-driven interface
62
63
  - Offline to-do list cache
63
- - Tested on Ubuntu and Linux Mint with Xorg and Wayland
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
- ### Currently Supported Todo Lists
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 Trackers
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
- <!-- ## Installation pipx
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
- ## Installation
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
- <!-- python3-gi python3-gi-cairo -->
107
+ ## Usage
99
108
 
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
- ```
109
+ #### Set up to-do lists and time trackers
105
110
 
106
- ### Install with Pip
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
- - Add the following to your startup applications `bash -c "source .venv/nowfocus/bin/activate; python3 -m what-am-doing"`
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
- - 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`
135
+ ## Development
119
136
 
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"`
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
@@ -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
  [project]
2
2
  name = "NowFocus"
3
- version = "0.2.0"
3
+ version = "0.2.1"
4
4
  authors = [
5
5
  { name="Altruist Enterprises" },
6
6
  ]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: NowFocus
3
- Version: 0.2.0
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
- # NowFocus
47
+ <img src="nowfocus.svg" style="float: left; width:120px;">
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
+ **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
- - Flexibly nested lists
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
- - Fast, keyboard-driven, interface
62
+ - Keyboard-driven interface
62
63
  - Offline to-do list cache
63
- - Tested on Ubuntu and Linux Mint with Xorg and Wayland
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
- ### Currently Supported Todo Lists
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 Trackers
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
- <!-- ## Installation pipx
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
- ## Installation
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
- <!-- python3-gi python3-gi-cairo -->
107
+ ## Usage
99
108
 
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
- ```
109
+ #### Set up to-do lists and time trackers
105
110
 
106
- ### Install with Pip
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
- - Add the following to your startup applications `bash -c "source .venv/nowfocus/bin/activate; python3 -m what-am-doing"`
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
- - 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`
135
+ ## Development
119
136
 
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"`
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
@@ -0,0 +1,4 @@
1
+ date,duration,project,task,start time
2
+ 2025-09-23,0.11666666666666667 minutes,Exercise,Yoga,11:54:08
3
+ 2025-09-23,3.0 minutes,Example Todo,Do something excellent,11:54:21
4
+ 2025-09-23,0.13333333333333333 minutes,Exercise,Yoga,11:56:07
@@ -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
- 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
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,i)
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,search_str = ''):
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