nowfocus 0.2.12__py3-none-any.whl → 0.2.13__py3-none-any.whl
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/__main__.py +3 -3
- nowfocus/connectors/txt.py +29 -26
- nowfocus/task_window.py +12 -6
- nowfocus/utils.py +4 -1
- {nowfocus-0.2.12.dist-info → nowfocus-0.2.13.dist-info}/METADATA +54 -37
- {nowfocus-0.2.12.dist-info → nowfocus-0.2.13.dist-info}/RECORD +10 -10
- {nowfocus-0.2.12.dist-info → nowfocus-0.2.13.dist-info}/WHEEL +0 -0
- {nowfocus-0.2.12.dist-info → nowfocus-0.2.13.dist-info}/entry_points.txt +0 -0
- {nowfocus-0.2.12.dist-info → nowfocus-0.2.13.dist-info}/licenses/LICENSE +0 -0
- {nowfocus-0.2.12.dist-info → nowfocus-0.2.13.dist-info}/top_level.txt +0 -0
nowfocus/__main__.py
CHANGED
|
@@ -442,8 +442,8 @@ class Application(Gtk.Application):
|
|
|
442
442
|
def mark_done(self, w=None, task = None):
|
|
443
443
|
''' second (task) argument is required and must be a task object '''
|
|
444
444
|
|
|
445
|
-
print("Mark Task done")
|
|
446
|
-
print(task)
|
|
445
|
+
print("Mark Task done",task['label'])
|
|
446
|
+
# print(task)
|
|
447
447
|
|
|
448
448
|
todolist_conf = conf.user['todolists'][task['todolist']]
|
|
449
449
|
|
|
@@ -510,8 +510,8 @@ class Application(Gtk.Application):
|
|
|
510
510
|
# print("add ",utils.extended_label(task)," to recent tasks")
|
|
511
511
|
i = Gtk.MenuItem.new_with_label(utils.extended_label(task))
|
|
512
512
|
i.connect('activate',self.start_task,task)
|
|
513
|
-
list_menus['recent'].prepend(i)
|
|
514
513
|
try:
|
|
514
|
+
list_menus['recent'].prepend(i)
|
|
515
515
|
list_menus['recent'].get_children()[11].destroy()
|
|
516
516
|
except Exception as e:
|
|
517
517
|
dbg("Exception trying to rotate recent tasks. probably are less than 11",l=2,s="recent")
|
nowfocus/connectors/txt.py
CHANGED
|
@@ -8,16 +8,17 @@ def add_new_task(user_conf,list,task_label):
|
|
|
8
8
|
|
|
9
9
|
|
|
10
10
|
with open(file_uri, 'r') as file:
|
|
11
|
-
# read a list of lines into data
|
|
12
11
|
data = file.readlines()
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
if list['id'] == user_conf['id']:
|
|
14
|
+
# Top level list, append to bottom
|
|
15
|
+
line_no = len(data) + 1
|
|
16
|
+
else:
|
|
17
|
+
line_no = get_line_no(list,data) + 1
|
|
15
18
|
|
|
16
|
-
line_no = get_line_no(list,data) + 1
|
|
17
19
|
new_line = list['data']['indent']+task_label+"\n"
|
|
18
20
|
|
|
19
21
|
# # Old version without recorded indent
|
|
20
|
-
|
|
21
22
|
# if list['id'] == user_conf['id']:
|
|
22
23
|
# # Top level insert
|
|
23
24
|
# new_line = task_label+"\n"
|
|
@@ -72,17 +73,15 @@ def get_line_no(i,lines):
|
|
|
72
73
|
else:
|
|
73
74
|
|
|
74
75
|
line_no = 0 #TODO: Improve, (better foreach with key)
|
|
75
|
-
in_list = False
|
|
76
76
|
|
|
77
77
|
for line in lines:
|
|
78
78
|
|
|
79
|
-
# TODO: Find the list
|
|
79
|
+
# TODO: Find the list
|
|
80
80
|
if line == i['data']['original_line']:
|
|
81
81
|
return line_no
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
throw("Line not found error Ha!")
|
|
83
|
+
|
|
84
|
+
utils.dbg("Line not found error",i,lines,s='txt',l=0)
|
|
86
85
|
|
|
87
86
|
def task_id(task):
|
|
88
87
|
''' The task parameter must have at least "label", "todolist" and "parent_id" '''
|
|
@@ -128,18 +127,18 @@ def get_todos(user_conf):
|
|
|
128
127
|
tasks = {}
|
|
129
128
|
lists = {}
|
|
130
129
|
lists[user_conf['id']] = {
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
130
|
+
'id':user_conf['id'],
|
|
131
|
+
'label':user_conf['label'],
|
|
132
|
+
'parent_id':'',
|
|
133
|
+
'parent_label':'',
|
|
134
|
+
'todolist':user_conf['id'],
|
|
135
|
+
'data':{
|
|
136
|
+
'line_no':0,
|
|
137
|
+
'original_line':'',
|
|
138
|
+
'accepts_tasks':True,
|
|
139
|
+
'indent':'',
|
|
140
|
+
}
|
|
141
|
+
}
|
|
143
142
|
|
|
144
143
|
current_list = []
|
|
145
144
|
current_list_label = []
|
|
@@ -205,6 +204,13 @@ def get_todos(user_conf):
|
|
|
205
204
|
|
|
206
205
|
|
|
207
206
|
utils.dbg(line.rstrip(),s='txt',l=3)
|
|
207
|
+
|
|
208
|
+
# Get prioritized tasks (starting with a number)
|
|
209
|
+
if label.split()[0].isnumeric():
|
|
210
|
+
priority = float(label.split()[0])
|
|
211
|
+
label = label.removeprefix(label.split()[0]).strip()
|
|
212
|
+
else:
|
|
213
|
+
priority = '0'
|
|
208
214
|
|
|
209
215
|
task_id = file_uri+":"+"/".join(current_list_label)+":"+label
|
|
210
216
|
|
|
@@ -222,6 +228,7 @@ def get_todos(user_conf):
|
|
|
222
228
|
'parent_label':str(parent_label),
|
|
223
229
|
'todolist':user_conf['id'],
|
|
224
230
|
'status': status,
|
|
231
|
+
'priority': priority,
|
|
225
232
|
'data':{
|
|
226
233
|
'line_no':line_no,
|
|
227
234
|
'original_line':line,
|
|
@@ -229,11 +236,7 @@ def get_todos(user_conf):
|
|
|
229
236
|
}
|
|
230
237
|
}
|
|
231
238
|
|
|
232
|
-
|
|
233
|
-
# if label[0].isdigit()
|
|
234
|
-
if label.split()[0].isnumeric():
|
|
235
|
-
tasks[task_id]['priority'] = float(label.split()[0])
|
|
236
|
-
tasks[task_id]['label'] = label.removeprefix(label.split()[0]).strip()
|
|
239
|
+
|
|
237
240
|
|
|
238
241
|
prev_indent = indent
|
|
239
242
|
prev_label = label
|
nowfocus/task_window.py
CHANGED
|
@@ -292,13 +292,13 @@ class TaskWindow(Gtk.Window):
|
|
|
292
292
|
pause_button.connect("clicked", self.recreate_header)
|
|
293
293
|
|
|
294
294
|
pause_button.connect("clicked", self.refresh_search_cache)
|
|
295
|
-
pause_button.set_property("tooltip-text", "Pause Task (
|
|
295
|
+
pause_button.set_property("tooltip-text", "Pause Task (Control S)")
|
|
296
296
|
pause_button.set_relief(Gtk.ReliefStyle.NONE)
|
|
297
297
|
self.header.add(pause_button)
|
|
298
298
|
|
|
299
299
|
done_button = Gtk.Button()
|
|
300
300
|
done_button.set_image(Gtk.Image.new_from_file(os.path.abspath('icon/mark-done.png')))
|
|
301
|
-
done_button.set_property("tooltip-text", "Mark Task Done (
|
|
301
|
+
done_button.set_property("tooltip-text", "Mark Task Done (Control D)")
|
|
302
302
|
done_button.connect("clicked", self.app.stop_task,'mark_done')
|
|
303
303
|
done_button.connect("clicked", self.recreate_header)
|
|
304
304
|
done_button.connect("clicked", self.refresh_search_cache) # doesn't work, probably because it happens before stop_task
|
|
@@ -310,14 +310,17 @@ class TaskWindow(Gtk.Window):
|
|
|
310
310
|
cancel_button.set_image(Gtk.Image.new_from_file(os.path.abspath('icon/cancel.png')))
|
|
311
311
|
cancel_button.connect("clicked", self.app.stop_task,"cancel")
|
|
312
312
|
cancel_button.connect("clicked", self.recreate_header)
|
|
313
|
-
cancel_button.set_property("tooltip-text", "Discard timer (
|
|
313
|
+
cancel_button.set_property("tooltip-text", "Discard timer (Control Q)")
|
|
314
314
|
cancel_button.set_relief(Gtk.ReliefStyle.NONE)
|
|
315
315
|
self.header.add(cancel_button)
|
|
316
316
|
|
|
317
|
-
key, mod = Gtk.accelerator_parse('<Control>p')
|
|
317
|
+
key, mod = Gtk.accelerator_parse('<Control>p') # for backward compatibility
|
|
318
|
+
pause_button.add_accelerator("clicked", self.accel_group, key, mod, Gtk.AccelFlags.VISIBLE)
|
|
319
|
+
|
|
320
|
+
key, mod = Gtk.accelerator_parse('<Control>S')
|
|
318
321
|
pause_button.add_accelerator("clicked", self.accel_group, key, mod, Gtk.AccelFlags.VISIBLE)
|
|
319
322
|
|
|
320
|
-
key, mod = Gtk.accelerator_parse('<Control>
|
|
323
|
+
key, mod = Gtk.accelerator_parse('<Control>q')
|
|
321
324
|
cancel_button.add_accelerator("clicked", self.accel_group, key, mod, Gtk.AccelFlags.VISIBLE)
|
|
322
325
|
|
|
323
326
|
key, mod = Gtk.accelerator_parse('<Control>d')
|
|
@@ -415,6 +418,10 @@ class TaskWindow(Gtk.Window):
|
|
|
415
418
|
|
|
416
419
|
# button_context = self.shown_tasks[t['id']].get_style_context().add_class("large")
|
|
417
420
|
extended_label = GLib.markup_escape_text(t['extended_label'],)
|
|
421
|
+
|
|
422
|
+
# Truncate excessively long task labels
|
|
423
|
+
if len(extended_label) > 110:
|
|
424
|
+
extended_label = extended_label[:110]+"..."
|
|
418
425
|
|
|
419
426
|
if len(search_str) > 1:
|
|
420
427
|
|
|
@@ -612,7 +619,6 @@ class TaskWindow(Gtk.Window):
|
|
|
612
619
|
# utils.dbg("key_press",key,s="taskwindow",l=1)
|
|
613
620
|
# utils.dbg("key_press event.state",event.state,s="taskwindow",l=1)
|
|
614
621
|
# utils.dbg("key_press_event",event,s="taskwindow",l=1)
|
|
615
|
-
# utils.dbg("ModifierType is CONTROL_MASK",Gdk.ModifierType.CONTROL_MASK,s="taskwindow",l=3)
|
|
616
622
|
|
|
617
623
|
if (event.state & Gdk.ModifierType.CONTROL_MASK) or key == 'Control_L':
|
|
618
624
|
self.modifyer_keys['control'] = True
|
nowfocus/utils.py
CHANGED
|
@@ -1185,10 +1185,13 @@ def add_todos_to_menu(target_menu = None, menu_tasks = None, list_menus = None,
|
|
|
1185
1185
|
list_menus[l['parent_id']].append(list_menu_items[list_id])
|
|
1186
1186
|
|
|
1187
1187
|
|
|
1188
|
-
|
|
1189
1188
|
for id, t in tasks.items():
|
|
1190
1189
|
if t['status'] == 1:
|
|
1191
1190
|
|
|
1191
|
+
# Truncate excessively long task labels
|
|
1192
|
+
if len(t['label']) > 60:
|
|
1193
|
+
t['label'] = t['label'][:60]+"..."
|
|
1194
|
+
|
|
1192
1195
|
menu_tasks[t['id']] = Gtk.MenuItem.new_with_label(str(t['label']))
|
|
1193
1196
|
menu_tasks[t['id']].connect("activate", activate_callback, t)
|
|
1194
1197
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: nowfocus
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.13
|
|
4
4
|
Summary: nowfocus: the open source task-tracking self-control panel.
|
|
5
5
|
Author: GitFr33
|
|
6
6
|
Project-URL: Homepage, https://gitlab.com/GitFr33/nowfocus
|
|
@@ -47,43 +47,50 @@ Dynamic: license-file
|
|
|
47
47
|
|
|
48
48
|
<div align="center"><img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/nowfocus.svg" width="60" align="center">
|
|
49
49
|
|
|
50
|
-
# *nowfocus* <br> Open-source task timer for
|
|
50
|
+
# *nowfocus* <br> Open-source task timer for Linux
|
|
51
51
|
|
|
52
52
|
**Avoid multifailing. Master your to-do lists. Track your time.**
|
|
53
53
|
|
|
54
54
|
</div>
|
|
55
55
|
|
|
56
|
-
nowfocus is a clean, keyboard-driven
|
|
56
|
+
nowfocus is a clean, keyboard-driven time management dashboard that flexibly connects multiple to-do lists with multiple time trackers and displays your current task and time spent in the status bar.
|
|
57
57
|
|
|
58
58
|
## Features
|
|
59
|
-
|
|
60
|
-
-
|
|
59
|
+
|
|
60
|
+
- Unlimited, flexible combinations of to-do lists and time tracking apps
|
|
61
61
|
- Inactivity detection that automatically pauses time tracking
|
|
62
|
-
- Pomodoro timer
|
|
63
62
|
- Task prioritization
|
|
63
|
+
- Infinitely nestable lists
|
|
64
|
+
- Pomodoro timer
|
|
64
65
|
- Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow though
|
|
65
66
|
- Randomness interrupt bell (optional) to keep you on track with tracking your time
|
|
66
67
|
- Keyboard-driven interface
|
|
67
68
|
- Offline to-do list cache
|
|
68
|
-
- CLI
|
|
69
|
+
- CLI interface
|
|
69
70
|
- Run a command (or launch an application) when a task is started
|
|
71
|
+
- Not built with Electron ♥
|
|
72
|
+
- Follows system dark-mode
|
|
73
|
+
- Lightening fast task search
|
|
70
74
|
|
|
71
|
-
|
|
72
|
-
<img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/
|
|
73
|
-
<img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-
|
|
74
|
-
<img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-
|
|
75
|
+
<table><tr><td>
|
|
76
|
+
<a href="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/darkmode.webp"><img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/darkmode.webp" height="200"></a></td><td>
|
|
77
|
+
<a href="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-42-56.webp"><img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-42-56.webp" height="200"></a></td><td>
|
|
78
|
+
<a href="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-46-14.webp"><img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-46-14.webp" height="200"></a></td><td>
|
|
79
|
+
<a href="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-53-22.webp"><img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-53-22.webp" height="200"></a></td></tr></table>
|
|
75
80
|
|
|
76
81
|
<br>
|
|
77
82
|
|
|
78
83
|
### Currently Supported To-do List Backends
|
|
79
84
|
|
|
80
|
-
-
|
|
81
|
-
- Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
|
|
82
|
-
- [todotxt format](http://todotxt.org/)
|
|
85
|
+
- [Trello](https://www.trello.com)
|
|
83
86
|
- [TaskWarrior](https://taskwarrior.org/)
|
|
87
|
+
- [todo.txt format](http://todotxt.org/)
|
|
84
88
|
- [Vikunja](https://www.vikunja.io)
|
|
85
89
|
- [Photosynthesis Timetracker](https://github.com/Photosynthesis/Timetracker/)
|
|
86
|
-
-
|
|
90
|
+
- Simple text file with indentation based sub-lists
|
|
91
|
+
- Any to-do list that supports [CalDav todos](https://en.wikipedia.org/wiki/CalDAV)
|
|
92
|
+
|
|
93
|
+
|
|
87
94
|
|
|
88
95
|
### Currently Supported Time Tracker Backends
|
|
89
96
|
|
|
@@ -96,35 +103,43 @@ nowfocus is a clean, keyboard-driven project time tracker built with python + GT
|
|
|
96
103
|
## Installation
|
|
97
104
|
|
|
98
105
|
1. Run the following in terminal to install and setup:
|
|
99
|
-
```
|
|
100
|
-
# Install dependencies
|
|
101
|
-
sudo apt install pipx gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
106
|
+
```
|
|
107
|
+
# Install dependencies
|
|
108
|
+
sudo apt install pipx gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
|
|
109
|
+
|
|
110
|
+
# note gir1.2-ayatanaappindicator3-0.1 can be substituted for gir1.2-appindicator3-0.1
|
|
102
111
|
|
|
103
|
-
#
|
|
112
|
+
# Set up pipx
|
|
113
|
+
pipx ensurepath
|
|
104
114
|
|
|
105
|
-
#
|
|
106
|
-
pipx ensurepath
|
|
115
|
+
# At this point you may need to source your .bashrc (or open a new terminal)
|
|
107
116
|
|
|
108
|
-
#
|
|
117
|
+
# Install nowfocus
|
|
118
|
+
pipx install nowfocus
|
|
109
119
|
|
|
110
|
-
#
|
|
111
|
-
pipx
|
|
120
|
+
# Enter application directory
|
|
121
|
+
cd ~/.local/share/pipx/venvs/nowfocus/lib/python3.12/site-packages/nowfocus/desktop-extras
|
|
112
122
|
|
|
113
|
-
#
|
|
114
|
-
|
|
123
|
+
# Copy desktop file and icon to /usr/share
|
|
124
|
+
sudo cp nowfocus.desktop /usr/share/applications/nowfocus.desktop
|
|
125
|
+
sudo cp nowfocus.svg /usr/share/icons/hicolor/scalable/apps/nowfocus.svg
|
|
115
126
|
|
|
116
|
-
#
|
|
117
|
-
|
|
118
|
-
sudo cp nowfocus.svg /usr/share/icons/hicolor/scalable/apps/nowfocus.svg
|
|
127
|
+
# and now Focus!
|
|
128
|
+
nowfocus
|
|
119
129
|
|
|
120
|
-
|
|
121
|
-
nowfocus
|
|
130
|
+
```
|
|
122
131
|
|
|
123
|
-
|
|
132
|
+
2. Set up a keybinding (on Ubuntu or Linux Mint), open **Settings > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the keystroke to Ctrl + Space (or the combination of your choice) set the **command** to:
|
|
133
|
+
```
|
|
134
|
+
bash -c "echo 'open_task_window' > /tmp/nowfocus-pipe"
|
|
135
|
+
```
|
|
124
136
|
|
|
125
|
-
2. Set up a keybinding (on Ubuntu or Linux Mint), open **Settings > Keyboard > Keyboard Shortcuts > Custom Shortcuts**, set the **command** to `nowfocus`, and pick whatever key combo you'd like.
|
|
126
137
|
|
|
127
|
-
|
|
138
|
+
|
|
139
|
+
3. Add the following command to your startup applications:
|
|
140
|
+
```
|
|
141
|
+
nowfocus --force
|
|
142
|
+
```
|
|
128
143
|
|
|
129
144
|
|
|
130
145
|
|
|
@@ -142,9 +157,9 @@ Open nowfocus **Settings** from the indicator menu or tasks window and connect y
|
|
|
142
157
|
- `Shift Enter` or `Shift Click` Transfer current session time to selected task (or top task if none selected)
|
|
143
158
|
- `Control Enter` or `Control Click` show opetions menu for selected (or top) task
|
|
144
159
|
- `Alt Enter` or `Alt Click` Open todolist for selected (or top) task
|
|
145
|
-
- `
|
|
146
|
-
- `
|
|
147
|
-
- `
|
|
160
|
+
- `Conrol + S` Pause and **save** current session
|
|
161
|
+
- `Conrol + D` Pause current session and mark task **Done**
|
|
162
|
+
- `Conrol + Q` **Quit** and discard current session
|
|
148
163
|
- `Ctrl + N` **New** task
|
|
149
164
|
- `Ctrl + R` **Refresh** todolists
|
|
150
165
|
- `Ctrl + L` or `Ctrl + F` **Focus** the task search
|
|
@@ -168,3 +183,5 @@ Open nowfocus **Settings** from the indicator menu or tasks window and connect y
|
|
|
168
183
|
- Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
|
|
169
184
|
- build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
|
|
170
185
|
- pipx install -e --force YOUR_INSTALL_PATH/monotask/
|
|
186
|
+
|
|
187
|
+
<!--built with python + GTK -->
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
nowfocus/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
|
2
|
-
nowfocus/__main__.py,sha256=
|
|
2
|
+
nowfocus/__main__.py,sha256=AHKig3rl3KnRK4chw4WcZxFTh7vu8CDXxBbl-ugDlJE,32524
|
|
3
3
|
nowfocus/conf.py,sha256=MZx8gPREKsrzOsTdf_LAaFB8ysMF-jMC5YQZpH6AU3E,6954
|
|
4
4
|
nowfocus/example-todo.txt,sha256=HRaNcPB1k8cksTtJS1GPqMjOdOY3gAUTWiSL0_ip0q8,265
|
|
5
5
|
nowfocus/new_task_dialog.py,sha256=3dEkQ4Ef7Gky4BGTx59U0qNfJCdMUrGrzx8HNTGbov8,4337
|
|
@@ -8,8 +8,8 @@ nowfocus/session_options.py,sha256=QVwJA53U7qZsbLe-OFr6UuFeaquco_yps_CRXsQ2_q4,5
|
|
|
8
8
|
nowfocus/sessions.csv,sha256=kYpr06yQg_J86NQ4AiYw4RnQchcw3ouPKVYa1lYDUNo,39
|
|
9
9
|
nowfocus/settings.py,sha256=c6Z5FSVvSEx9fm8mQkdRo1TLfxFJEJdCMiqGyElv4bs,36873
|
|
10
10
|
nowfocus/styles.css,sha256=m_7YXkDD7wljw5sFrv-CEJVImRpe92ER6kMa5rCICVo,489
|
|
11
|
-
nowfocus/task_window.py,sha256=
|
|
12
|
-
nowfocus/utils.py,sha256=
|
|
11
|
+
nowfocus/task_window.py,sha256=aCPbiC2qXXSFrM93JWsiEVHNuIPEvldFWt98DPaD1vI,26345
|
|
12
|
+
nowfocus/utils.py,sha256=eTNNO27W3mWzNntIFqJ7NlCRPPd3Ud33MxiNPfbNBH8,47095
|
|
13
13
|
nowfocus/connectors/activitywatch.py,sha256=QbkOmjIOiVwccWc2xhhePd0Abww5vEiVpCNjeqOyYGg,921
|
|
14
14
|
nowfocus/connectors/caldav.py,sha256=PeM_9yJC8W17L8Y5AyS75o6GfzTrPoMYKIvetND8T78,5089
|
|
15
15
|
nowfocus/connectors/csv.py,sha256=FwMpHM5lPIT90HKBCQUncpaW7zqFjlHjMwKR0-XWg-4,821
|
|
@@ -19,7 +19,7 @@ nowfocus/connectors/timewarrior.py,sha256=0Hra0GVPYdRqGtG_TbH3gzfUl192hH1DO2_WrD
|
|
|
19
19
|
nowfocus/connectors/todo_template.py,sha256=R37fA2LXo8_LpWIgqozytI5RqIUjGggFHup25xTykII,1572
|
|
20
20
|
nowfocus/connectors/todotxt.py,sha256=AKkHe_kv7iyk9rbXL1VwCN-ZyCluGlWP4wBcLn_Wnz4,3669
|
|
21
21
|
nowfocus/connectors/trello.py,sha256=VqwnvHGXXcljmdf6kRZcE6sfeBQYhped_KVBEBOzWXM,6072
|
|
22
|
-
nowfocus/connectors/txt.py,sha256=
|
|
22
|
+
nowfocus/connectors/txt.py,sha256=ybYRagybuI3AjaeJO0QFjTlGntriFqJ3aq2aN2sDOGs,7777
|
|
23
23
|
nowfocus/connectors/vikunja.py,sha256=jOEQGGMu9tJJXlcJwtbsqLkCTqbsSlnja-QoyBrJ9eM,10856
|
|
24
24
|
nowfocus/desktop-extras/nowfocus.desktop,sha256=0kWsx0ZfvPbubGG1uuFSHxxYUw2GV9Ly_rtlboM1mak,294
|
|
25
25
|
nowfocus/desktop-extras/nowfocus.png,sha256=P5rn6-0EAJa2WXf4SJoaNtLRUfiV3LdsOroPKsR6GfA,15148
|
|
@@ -49,9 +49,9 @@ nowfocus/icon/settings.svg,sha256=fgkGJouPPtZLxZn2nr_5pEp9MdhRSRaW9mtdxhJHDuQ,39
|
|
|
49
49
|
nowfocus/sound/bell-xylophone-g.mp3,sha256=1OBcRWvD87AGNcq1uZFR8HqG0nanJykImERfVDVxHD4,53891
|
|
50
50
|
nowfocus/sound/dinner-bell.mp3,sha256=hjjO0xqA4uXpYw9KLwwlBnrVfRhVq1K5OXzwlMXhRn4,113620
|
|
51
51
|
nowfocus/sound/xylophone-chord.mp3,sha256=gwgBSqhMt5PMzT5N03Z6TvDgipQZfnkEz_o81Rq5Z1U,131806
|
|
52
|
-
nowfocus-0.2.
|
|
53
|
-
nowfocus-0.2.
|
|
54
|
-
nowfocus-0.2.
|
|
55
|
-
nowfocus-0.2.
|
|
56
|
-
nowfocus-0.2.
|
|
57
|
-
nowfocus-0.2.
|
|
52
|
+
nowfocus-0.2.13.dist-info/licenses/LICENSE,sha256=fSJzoHs1EOCwEd7FIyokFeGEma7NKmTVEdHkCr5OIV4,35127
|
|
53
|
+
nowfocus-0.2.13.dist-info/METADATA,sha256=Xg2xQ1ivQml4HdpkgBbOqzoRisB_1nmzkzfLmn2jiys,7023
|
|
54
|
+
nowfocus-0.2.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
55
|
+
nowfocus-0.2.13.dist-info/entry_points.txt,sha256=RbYY19-irSoNVglNeNnL9D36cHft7aKsaEGEYoSH3pA,51
|
|
56
|
+
nowfocus-0.2.13.dist-info/top_level.txt,sha256=3uLd9BwmfarZwqVUxkSJuVwJ8qHzjThte8rt_UYG7tE,9
|
|
57
|
+
nowfocus-0.2.13.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|