NowFocus 0.2.3__tar.gz → 0.2.6__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 (130) hide show
  1. {nowfocus-0.2.3/src/NowFocus.egg-info → nowfocus-0.2.6}/PKG-INFO +44 -38
  2. {nowfocus-0.2.3 → nowfocus-0.2.6}/README.md +40 -34
  3. {nowfocus-0.2.3 → nowfocus-0.2.6}/pyproject.toml +4 -4
  4. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/__main__.py +7 -1
  5. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/conf.py +1 -1
  6. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/todotxt.py +0 -2
  7. nowfocus-0.2.6/src/nowfocus/desktop-extras/nowfocus.desktop +13 -0
  8. nowfocus-0.2.6/src/nowfocus/desktop-extras/nowfocus.png +0 -0
  9. nowfocus-0.2.6/src/nowfocus/desktop-extras/nowfocus.svg +46 -0
  10. nowfocus-0.2.6/src/nowfocus/desktop-extras/set_gsettings_keybinding.sh +51 -0
  11. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/example-todo.txt +1 -1
  12. nowfocus-0.2.6/src/nowfocus/icon/icon-0.svg +91 -0
  13. nowfocus-0.2.6/src/nowfocus/icon/icon-1.svg +91 -0
  14. nowfocus-0.2.6/src/nowfocus/icon/icon-2.svg +91 -0
  15. nowfocus-0.2.6/src/nowfocus/icon/icon-3.svg +91 -0
  16. nowfocus-0.2.6/src/nowfocus/icon/icon-4.svg +91 -0
  17. nowfocus-0.2.6/src/nowfocus/icon/icon-5.svg +91 -0
  18. nowfocus-0.2.6/src/nowfocus/icon/icon-6.svg +91 -0
  19. nowfocus-0.2.6/src/nowfocus/icon/icon-7.svg +91 -0
  20. nowfocus-0.2.6/src/nowfocus/icon/icon-8.svg +91 -0
  21. nowfocus-0.2.6/src/nowfocus/icon/icon-9.svg +91 -0
  22. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/icon.svg +40 -22
  23. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/settings.py +96 -52
  24. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/task_window.py +3 -6
  25. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/utils.py +5 -5
  26. {nowfocus-0.2.3 → nowfocus-0.2.6/src/nowfocus.egg-info}/PKG-INFO +44 -38
  27. nowfocus-0.2.6/src/nowfocus.egg-info/SOURCES.txt +60 -0
  28. nowfocus-0.2.3/src/NowFocus.egg-info/SOURCES.txt +0 -113
  29. nowfocus-0.2.3/src/nowfocus/icon/icon-0.png +0 -0
  30. nowfocus-0.2.3/src/nowfocus/icon/icon-0.svg +0 -86
  31. nowfocus-0.2.3/src/nowfocus/icon/icon-1.svg +0 -86
  32. nowfocus-0.2.3/src/nowfocus/icon/icon-2.svg +0 -86
  33. nowfocus-0.2.3/src/nowfocus/icon/icon-3.svg +0 -86
  34. nowfocus-0.2.3/src/nowfocus/icon/icon-4.svg +0 -86
  35. nowfocus-0.2.3/src/nowfocus/icon/icon-5.svg +0 -86
  36. nowfocus-0.2.3/src/nowfocus/icon/icon-6.svg +0 -86
  37. nowfocus-0.2.3/src/nowfocus/icon/icon-7.svg +0 -86
  38. nowfocus-0.2.3/src/nowfocus/icon/icon-8.svg +0 -86
  39. nowfocus-0.2.3/src/nowfocus/icon/icon-9.svg +0 -86
  40. nowfocus-0.2.3/src/nowfocus/icon/icon.png +0 -0
  41. nowfocus-0.2.3/src/nowfocus/icon/unused/action-unavailable-symbolic.svg +0 -3
  42. nowfocus-0.2.3/src/nowfocus/icon/unused/applications-engineering-symbolic.svg +0 -3
  43. nowfocus-0.2.3/src/nowfocus/icon/unused/background-selected-symbolic.svg +0 -5
  44. nowfocus-0.2.3/src/nowfocus/icon/unused/cancel-operation-symbolic.svg +0 -1
  45. nowfocus-0.2.3/src/nowfocus/icon/unused/checkbox-checked-symbolic (2).svg +0 -7
  46. nowfocus-0.2.3/src/nowfocus/icon/unused/checkbox-checked-symbolic.svg +0 -4
  47. nowfocus-0.2.3/src/nowfocus/icon/unused/checkbox-mixed-symbolic (2).svg +0 -6
  48. nowfocus-0.2.3/src/nowfocus/icon/unused/checkbox-mixed-symbolic.svg +0 -4
  49. nowfocus-0.2.3/src/nowfocus/icon/unused/checkbox-symbolic (2).svg +0 -6
  50. nowfocus-0.2.3/src/nowfocus/icon/unused/checkbox-symbolic.svg +0 -4
  51. nowfocus-0.2.3/src/nowfocus/icon/unused/clock-app-symbolic.svg +0 -5
  52. nowfocus-0.2.3/src/nowfocus/icon/unused/document-edit-symbolic.svg +0 -3
  53. nowfocus-0.2.3/src/nowfocus/icon/unused/document-new-symbolic.svg +0 -5
  54. nowfocus-0.2.3/src/nowfocus/icon/unused/document-open-recent-symbolic.svg +0 -3
  55. nowfocus-0.2.3/src/nowfocus/icon/unused/edit-find-symbolic.svg +0 -3
  56. nowfocus-0.2.3/src/nowfocus/icon/unused/edit-symbolic.svg +0 -5
  57. nowfocus-0.2.3/src/nowfocus/icon/unused/filter-flagged-symbolic.svg +0 -6
  58. nowfocus-0.2.3/src/nowfocus/icon/unused/format-unordered-list-symbolic.svg +0 -5
  59. nowfocus-0.2.3/src/nowfocus/icon/unused/help-about-symbolic.svg +0 -6
  60. nowfocus-0.2.3/src/nowfocus/icon/unused/list-add-symbolic.svg +0 -3
  61. nowfocus-0.2.3/src/nowfocus/icon/unused/list-remove-symbolic.svg +0 -3
  62. nowfocus-0.2.3/src/nowfocus/icon/unused/media-playback-pause.svg +0 -46
  63. nowfocus-0.2.3/src/nowfocus/icon/unused/media-playback-start-symbolic.svg +0 -3
  64. nowfocus-0.2.3/src/nowfocus/icon/unused/no-event-symbolic.svg +0 -6
  65. nowfocus-0.2.3/src/nowfocus/icon/unused/object-select-symbolic.svg +0 -5
  66. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic-2.svg +0 -4
  67. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-about-symbolic.svg +0 -1
  68. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-keyboard-symbolic.svg +0 -1
  69. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic (2).svg +0 -4
  70. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-notifications-symbolic.svg +0 -1
  71. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic-2.svg +0 -4
  72. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-search-symbolic.svg +0 -1
  73. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-system-symbolic.svg +0 -4
  74. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-time-symbolic.svg +0 -7
  75. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.Settings-wacom-symbolic.svg +0 -1
  76. nowfocus-0.2.3/src/nowfocus/icon/unused/org.gnome.clocks-symbolic.svg +0 -5
  77. nowfocus-0.2.3/src/nowfocus/icon/unused/pause-large-symbolic.svg +0 -3
  78. nowfocus-0.2.3/src/nowfocus/icon/unused/preferences-system-time-symbolic.svg +0 -6
  79. nowfocus-0.2.3/src/nowfocus/icon/unused/process-stop-symbolic.svg +0 -3
  80. nowfocus-0.2.3/src/nowfocus/icon/unused/selection-checked.svg +0 -71
  81. nowfocus-0.2.3/src/nowfocus/icon/unused/software-installed-symbolic.svg +0 -3
  82. nowfocus-0.2.3/src/nowfocus/icon/unused/stopwatch-symbolic.svg +0 -8
  83. nowfocus-0.2.3/src/nowfocus/icon/unused/system-settings-symbolic.svg +0 -7
  84. nowfocus-0.2.3/src/nowfocus/icon/unused/timer-sand-symbolic.svg +0 -8
  85. nowfocus-0.2.3/src/nowfocus/icon/unused/timer-symbolic.svg +0 -3
  86. nowfocus-0.2.3/src/nowfocus/icon/unused/user-trash-symbolic (2).svg +0 -3
  87. nowfocus-0.2.3/src/nowfocus/icon/unused/user-trash-symbolic.svg +0 -10
  88. nowfocus-0.2.3/src/nowfocus/icon/unused/view-fullscreen-symbolic.svg +0 -8
  89. nowfocus-0.2.3/src/nowfocus/icon/unused/view-more-horizontal-symbolic.svg +0 -7
  90. nowfocus-0.2.3/src/nowfocus/icon/unused/view-more-symbolic.svg +0 -7
  91. nowfocus-0.2.3/src/nowfocus/icon/unused/view-restore-symbolic.svg +0 -3
  92. nowfocus-0.2.3/src/nowfocus/icon/unused/view-sort-ascending-symbolic.svg +0 -3
  93. nowfocus-0.2.3/src/nowfocus/icon/unused/view-sort-descending-symbolic.svg +0 -3
  94. nowfocus-0.2.3/src/nowfocus/icon/unused/view-tasks-unscheduled-symbolic.svg +0 -12
  95. nowfocus-0.2.3/src/nowfocus/runner.sh +0 -8
  96. {nowfocus-0.2.3 → nowfocus-0.2.6}/LICENSE +0 -0
  97. {nowfocus-0.2.3 → nowfocus-0.2.6}/setup.cfg +0 -0
  98. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/__init__.py +0 -0
  99. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/activitywatch.py +0 -0
  100. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/caldav.py +0 -0
  101. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/csv.py +0 -0
  102. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/psc_timetracker.py +0 -0
  103. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/taskwarrior.py +0 -0
  104. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/timewarrior.py +0 -0
  105. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/todo_template.py +0 -0
  106. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/trello.py +0 -0
  107. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/txt.py +0 -0
  108. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/connectors/vikunja.py +0 -0
  109. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/cancel.png +0 -0
  110. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/cancel.svg +0 -0
  111. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/edit.png +0 -0
  112. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/edit.svg +0 -0
  113. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/mark-done.png +0 -0
  114. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/mark-done.svg +0 -0
  115. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/pause.png +0 -0
  116. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/pause.svg +0 -0
  117. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/settings.png +0 -0
  118. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/icon/settings.svg +0 -0
  119. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/new_task_dialog.py +0 -0
  120. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/session_edit_dialog.py +0 -0
  121. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/session_options.py +0 -0
  122. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/sessions.csv +0 -0
  123. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/sound/bell-xylophone-g.mp3 +0 -0
  124. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/sound/dinner-bell.mp3 +0 -0
  125. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/sound/xylophone-chord.mp3 +0 -0
  126. {nowfocus-0.2.3 → nowfocus-0.2.6}/src/nowfocus/styles.css +0 -0
  127. {nowfocus-0.2.3/src/NowFocus.egg-info → nowfocus-0.2.6/src/nowfocus.egg-info}/dependency_links.txt +0 -0
  128. {nowfocus-0.2.3/src/NowFocus.egg-info → nowfocus-0.2.6/src/nowfocus.egg-info}/entry_points.txt +0 -0
  129. {nowfocus-0.2.3/src/NowFocus.egg-info → nowfocus-0.2.6/src/nowfocus.egg-info}/requires.txt +0 -0
  130. {nowfocus-0.2.3/src/NowFocus.egg-info → nowfocus-0.2.6/src/nowfocus.egg-info}/top_level.txt +0 -0
@@ -1,9 +1,9 @@
1
1
  Metadata-Version: 2.4
2
- Name: NowFocus
3
- Version: 0.2.3
4
- Summary: NowFocus: the open source task-tracking self-control panel.
2
+ Name: nowfocus
3
+ Version: 0.2.6
4
+ Summary: nowfocus: the open source task-tracking self-control panel.
5
5
  Author: GitFr33
6
- Project-URL: Homepage, https://gitlab.com/GitFr33/NowFocus
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,14 +44,15 @@ Requires-Dist: vobject
44
44
  Requires-Dist: x-wr-timezone
45
45
  Dynamic: license-file
46
46
 
47
- <div align="center"><img src="nowfocus.svg" width="60" align="center">
47
+ <div align="center"><img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/nowfocus.svg" width="60" align="center">
48
48
 
49
- # *NowFocus* <br> Open-source task timer for linux
49
+ # *nowfocus* <br> Open-source task timer for linux
50
50
 
51
51
  **Avoid multifailing. Master your to-do lists. Track your time.**
52
52
 
53
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.
54
+
55
+ 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.
55
56
 
56
57
  ## Features
57
58
  - Unlimited flexible combinations of to-do lists and time tracking systems
@@ -67,9 +68,9 @@ NowFocus is a clean, keyboard-driven project time tracker build with python + GT
67
68
  - Run a command (or launch an application) when a task is started
68
69
 
69
70
 
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">
71
+ <img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-42-56.webp" width="500">
72
+ <img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-46-14.webp" width="400">
73
+ <img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-53-22.webp" width="400">
73
74
 
74
75
  <br>
75
76
 
@@ -93,24 +94,47 @@ NowFocus is a clean, keyboard-driven project time tracker build with python + GT
93
94
 
94
95
  ## Installation (using pipx)
95
96
 
96
- 1. Run the following in terminal to install with dependencies:
97
+ Run the following in terminal to install and setup:
97
98
  ```
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
99
+ # Install dependencies
100
+ sudo apt install pip pipx gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
101
+
102
+ # Set up pipx
99
103
  pipx ensurepath
100
- pipx install NowFocus
101
- ```
102
- 2. Now run `nowfocus` and check for errors
103
104
 
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.
105
+ # At this point you may need to restart your terminal window
106
+
107
+ # Install nowfocus
108
+ pipx install nowfocus
109
+
110
+ # Enter application directory
111
+ cd ~/.local/share/pipx/venvs/nowfocus/lib/python3.12/site-packages/nowfocus
112
+
113
+ # Copy .desktop and icon to .local/share
114
+ cp src/desktop-extras/nowfocus.desktop ~/.local/share/applications/nowfocus.desktop
115
+ cp src/desktop-extras/nowfocus.svg ~/.local/share/icons/nowfocus.png
116
+ cp src/desktop-extras/nowfocus.svg ~/.local/share/icons/hicolor/scalable/apps/nowfocus.svg
117
+
118
+ # Setup autostart
119
+ cp src/desktop-extras/nowfocus.desktop ~/.config/autostart/nowfocus.desktop
120
+
121
+ # Set Super space as keybinding to raise task window
122
+ chmod +x src/desktop-extras/set_gsettings_keybinding.sh
123
+
124
+ src/desktop-extras/set_gsettings_keybinding.sh "Open nowfocus" nowfocus "<Super>space"
125
+
126
+ # and now Focus!
127
+ nowfocus
128
+
129
+ ```
105
130
 
106
- 4. Add the following command to your startup applications: `nowfocus --force`
107
131
 
108
132
 
109
133
  ## Usage
110
134
 
111
135
  #### Set up to-do lists and time trackers
112
136
 
113
- Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
137
+ Open nowfocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
114
138
 
115
139
  #### Task Window Keybindings
116
140
 
@@ -127,8 +151,8 @@ Open NowFocus **Settings** from the indicator menu or tasks window and connect y
127
151
  #### Commandline Interface
128
152
 
129
153
  - 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"`
154
+ - If nowfocus has crashed or failed to shut down nicely use `nowfocus --force`
155
+ - To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
132
156
  - To stop timing use `nowfocus stop`
133
157
  - Start with verbose logging use: `nowfocus -l 3`
134
158
  - Start with targeted verbose logging use: `nowfocus -s trello`
@@ -143,21 +167,3 @@ Open NowFocus **Settings** from the indicator menu or tasks window and connect y
143
167
  - Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
144
168
  - build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
145
169
  - pipx install -e --force YOUR_INSTALL_PATH/monotask/
146
-
147
-
148
-
149
- <!--
150
- ## Build Flatpak
151
-
152
- ```
153
- python3 -m build
154
- # python3 flatpak-pip-generator --runtime=org.gnome.Sdk/x86_64/47 PACKAGE # run this for lots of stuff
155
- flatpak run org.flatpak.Builder --force-clean --user --install --install-deps-from=flathub --repo=repo builddir APPID.yaml
156
- flatpak run APPID
157
- ```
158
- -->
159
-
160
-
161
- <!-- ## Contributing
162
- Package it for your operating system.
163
- Write a connector for your favorite to-do list or time tracker -->
@@ -1,11 +1,12 @@
1
- <div align="center"><img src="nowfocus.svg" width="60" align="center">
1
+ <div align="center"><img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/nowfocus.svg" width="60" align="center">
2
2
 
3
- # *NowFocus* <br> Open-source task timer for linux
3
+ # *nowfocus* <br> Open-source task timer for linux
4
4
 
5
5
  **Avoid multifailing. Master your to-do lists. Track your time.**
6
6
 
7
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.
8
+
9
+ 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
 
10
11
  ## Features
11
12
  - Unlimited flexible combinations of to-do lists and time tracking systems
@@ -21,9 +22,9 @@ NowFocus is a clean, keyboard-driven project time tracker build with python + GT
21
22
  - Run a command (or launch an application) when a task is started
22
23
 
23
24
 
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">
25
+ <img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-42-56.webp" width="500">
26
+ <img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-46-14.webp" width="400">
27
+ <img src="https://gitlab.com/GitFr33/nowfocus/-/raw/main/docs/Screenshot-25-09-23-11-53-22.webp" width="400">
27
28
 
28
29
  <br>
29
30
 
@@ -47,24 +48,47 @@ NowFocus is a clean, keyboard-driven project time tracker build with python + GT
47
48
 
48
49
  ## Installation (using pipx)
49
50
 
50
- 1. Run the following in terminal to install with dependencies:
51
+ Run the following in terminal to install and setup:
51
52
  ```
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
+ # Install dependencies
54
+ sudo apt install pip pipx gir1.2-appindicator3-0.1 meson libdbus-glib-1-dev patchelf libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev
55
+
56
+ # Set up pipx
53
57
  pipx ensurepath
54
- pipx install NowFocus
55
- ```
56
- 2. Now run `nowfocus` and check for errors
57
58
 
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
+ # At this point you may need to restart your terminal window
60
+
61
+ # Install nowfocus
62
+ pipx install nowfocus
63
+
64
+ # Enter application directory
65
+ cd ~/.local/share/pipx/venvs/nowfocus/lib/python3.12/site-packages/nowfocus
66
+
67
+ # Copy .desktop and icon to .local/share
68
+ cp src/desktop-extras/nowfocus.desktop ~/.local/share/applications/nowfocus.desktop
69
+ cp src/desktop-extras/nowfocus.svg ~/.local/share/icons/nowfocus.png
70
+ cp src/desktop-extras/nowfocus.svg ~/.local/share/icons/hicolor/scalable/apps/nowfocus.svg
71
+
72
+ # Setup autostart
73
+ cp src/desktop-extras/nowfocus.desktop ~/.config/autostart/nowfocus.desktop
74
+
75
+ # Set Super space as keybinding to raise task window
76
+ chmod +x src/desktop-extras/set_gsettings_keybinding.sh
77
+
78
+ src/desktop-extras/set_gsettings_keybinding.sh "Open nowfocus" nowfocus "<Super>space"
79
+
80
+ # and now Focus!
81
+ nowfocus
82
+
83
+ ```
59
84
 
60
- 4. Add the following command to your startup applications: `nowfocus --force`
61
85
 
62
86
 
63
87
  ## Usage
64
88
 
65
89
  #### Set up to-do lists and time trackers
66
90
 
67
- Open NowFocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
91
+ Open nowfocus **Settings** from the indicator menu or tasks window and connect your to-do lists and time tracker(s)
68
92
 
69
93
  #### Task Window Keybindings
70
94
 
@@ -81,8 +105,8 @@ Open NowFocus **Settings** from the indicator menu or tasks window and connect y
81
105
  #### Commandline Interface
82
106
 
83
107
  - 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"`
108
+ - If nowfocus has crashed or failed to shut down nicely use `nowfocus --force`
109
+ - To start timing a task: add the task name as the first positional argument. `nowfocus "checking email"`
86
110
  - To stop timing use `nowfocus stop`
87
111
  - Start with verbose logging use: `nowfocus -l 3`
88
112
  - Start with targeted verbose logging use: `nowfocus -s trello`
@@ -97,21 +121,3 @@ Open NowFocus **Settings** from the indicator menu or tasks window and connect y
97
121
  - Change to `YOUR_INSTALL_PATH` directory with `cd YOUR_INSTALL_PATH/nowfocus`
98
122
  - build python module with `python3 -m build` (this should be done in a venv and will require some dependecies...)
99
123
  - 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,10 +1,10 @@
1
1
  [project]
2
- name = "NowFocus"
3
- version = "0.2.3"
2
+ name = "nowfocus"
3
+ version = "0.2.6"
4
4
  authors = [
5
5
  { name="GitFr33" },
6
6
  ]
7
- description = "NowFocus: the open source task-tracking self-control panel."
7
+ description = "nowfocus: the open source task-tracking self-control panel."
8
8
  readme = "README.md"
9
9
 
10
10
  classifiers = [
@@ -55,7 +55,7 @@ dependencies = [
55
55
  ]
56
56
 
57
57
  [project.urls]
58
- Homepage = "https://gitlab.com/GitFr33/NowFocus"
58
+ Homepage = "https://gitlab.com/GitFr33/nowfocus"
59
59
 
60
60
  [project.gui-scripts]
61
61
  nowfocus = "nowfocus.__main__:startup"
@@ -52,6 +52,8 @@ dbg(conf.user,l=3,s='user_settings')
52
52
  setproctitle.setproctitle(conf.app_name)
53
53
  pipe_file = os.path.dirname(os.path.realpath(__file__))+"/"+conf.app_id+"_pipe"
54
54
 
55
+ print(conf.app_name +" running from " + os.path.dirname(os.path.realpath(__file__)))
56
+
55
57
  class Application(Gtk.Application):
56
58
  def __init__(self, *args, **kwargs):
57
59
  super().__init__(*args, application_id="org.example.myapp", **kwargs)
@@ -331,14 +333,18 @@ class Application(Gtk.Application):
331
333
 
332
334
  if transfer_current_session_time:
333
335
  start_time = self.session['start_time']
336
+ duration = self.session['duration']
337
+
334
338
  if(self.is_running == True):
335
339
  self.stop_task(None,'cancel')
336
340
 
337
341
  else:
338
342
  start_time = now()
343
+ duration = 0
339
344
 
340
345
  if(self.is_running == True):
341
346
  self.stop_task()
347
+
342
348
 
343
349
  self.is_running = True
344
350
 
@@ -346,7 +352,7 @@ class Application(Gtk.Application):
346
352
  "label": task_label,
347
353
  "extended_label": utils.extended_label(task_data),
348
354
  "start_time": start_time,
349
- "duration":0,
355
+ "duration":duration,
350
356
  "task":task_data,
351
357
  "notes":'',
352
358
  }
@@ -12,7 +12,7 @@ from gi.repository import Gtk, GLib, Gdk
12
12
  # Set working dir to file location
13
13
  os.chdir(os.path.dirname(os.path.realpath(__file__)))
14
14
  app_id = "nowfocus" # Folder name for xdg config and data locations
15
- app_name = "NowFocus" # What shows up with pidof and in window titles etc
15
+ app_name = "nowfocus" # What shows up with pidof and in window titles etc
16
16
 
17
17
  user_data_dir = GLib.get_user_data_dir()+"/"+app_id
18
18
  Path(user_data_dir).mkdir(parents=True, exist_ok=True)
@@ -76,8 +76,6 @@ def mark_task_done(task):
76
76
  '''Return True on success False on error'''
77
77
 
78
78
  todotxt = pytodotxt.TodoTxt(conf.user['todolists'][task['todolist']]['file'])
79
-
80
- # id = user_conf['id']+">"+t.bare_description() # TODO: better id!
81
79
 
82
80
  for t in todotxt.parse():
83
81
  if t.bare_description() == task['label']:
@@ -0,0 +1,13 @@
1
+ [Desktop Entry]
2
+ Name=nowfocus
3
+ GenericName=Task, Todo, Timer, timertacker
4
+ Version=1.0
5
+ Comment=Accomplish one worthwhile thing at a time.
6
+ Exec=nowfocus
7
+ Icon=nowfocus
8
+ Terminal=false
9
+ Type=Application
10
+ StartupNotify=true
11
+ Categories=Utility;Application;
12
+ X-GNOME-SingleWindow=true
13
+ SingleMainWindow=true
@@ -0,0 +1,46 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <svg
3
+ viewBox="0 0 16 16"
4
+ version="1.1"
5
+ id="svg1"
6
+ sodipodi:docname="nowfocus.svg"
7
+ xml:space="preserve"
8
+ inkscape:version="1.3.2 (1:1.3.2+202404261509+091e20ef0f)"
9
+ inkscape:export-filename="nowfocus.png"
10
+ inkscape:export-xdpi="1536"
11
+ inkscape:export-ydpi="1536"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg"><defs
16
+ id="defs1" /><sodipodi:namedview
17
+ id="namedview1"
18
+ pagecolor="#ffffff"
19
+ bordercolor="#666666"
20
+ borderopacity="1.0"
21
+ inkscape:showpageshadow="2"
22
+ inkscape:pageopacity="0.0"
23
+ inkscape:pagecheckerboard="true"
24
+ inkscape:deskcolor="#ffffff"
25
+ showborder="true"
26
+ inkscape:zoom="13.599277"
27
+ inkscape:cx="1.0662332"
28
+ inkscape:cy="13.713964"
29
+ inkscape:window-width="1920"
30
+ inkscape:window-height="1011"
31
+ inkscape:window-x="0"
32
+ inkscape:window-y="0"
33
+ inkscape:window-maximized="1"
34
+ inkscape:current-layer="svg1"
35
+ inkscape:export-bgcolor="#ffffff00" /><circle
36
+ style="fill:#008a03;fill-opacity:1;stroke:#ffffff;stroke-width:0.993891;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
37
+ id="path2"
38
+ cx="8"
39
+ cy="8"
40
+ r="7.4525633"
41
+ inkscape:export-filename="src/desktop-extras/nowfocus.svg"
42
+ inkscape:export-xdpi="1536"
43
+ inkscape:export-ydpi="1536" /><path
44
+ style="color:#000000;fill:#008a03;fill-opacity:1;stroke:#ffffff;stroke-width:0.977448;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1;paint-order:stroke fill markers"
45
+ d="M 14.000668,2.1939015 7.2594966,8.8841635 4.0649707,5.7193344 a 0.81454047,0.81454047 0 0 0 -1.1518112,0.00636 0.81454047,0.81454047 0 0 0 0.00636,1.1518112 l 3.7672497,3.7333114 a 0.81462193,0.81462193 0 0 0 1.1475686,0 L 15.148237,3.3499549 a 0.81454047,0.81454047 0 0 0 0.0042,-1.1518111 0.81454047,0.81454047 0 0 0 -1.151811,-0.00425 z"
46
+ id="path3" /></svg>
@@ -0,0 +1,51 @@
1
+ #!/bin/bash
2
+
3
+ # This function simplifies setting up Gnome 3 shortcuts from terminal
4
+
5
+ # $1 name of the shortcut
6
+ # $2 command to execute
7
+ # $3 keyboard shortcut
8
+
9
+ # src: https://askubuntu.com/a/597414/279745 and https://gitlab.com/tukusejssirs/lnx_scripts/-/blob/master/bash/functions/gshort.sh
10
+
11
+ # TODO
12
+ # - before shortcut creation, check if:
13
+ # - the shortcut is not used already in custom shortcuts;
14
+ # - the command is not used already in custom shortcuts;
15
+ # - sometimes is uses the very same $num multiple times;
16
+
17
+
18
+ gshort(){
19
+ set -o errexit
20
+ local name="$1"
21
+ local command="$2"
22
+ local shortcut="$3"
23
+ local value test value_new
24
+ value="$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings)"
25
+ test="$(sed "s/\['//;s/', '/,/g;s/'\]//" <<< "$value" | tr ',' '\n' | grep -oP ".*/custom\K[0-9]*(?=/$)")"
26
+
27
+ if [ "$(echo "$value" | grep -o "@as")" = "@as" ]; then
28
+ local num=0
29
+ value_new="['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/']"
30
+ else
31
+ local i=1
32
+
33
+ until [ "$num" != "" ]; do
34
+ if [ "$(grep -o $i <<< "$test")" != "$i" ]; then
35
+ local num=$i
36
+ fi
37
+ i="$(echo 1+$i | bc)";
38
+ done
39
+
40
+ value_new="$(gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings | sed "s#']\$#', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/']#")"
41
+ fi
42
+
43
+ echo setting custom-keybinding ${num} to ${command} with ${shortcut}
44
+
45
+ gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "$value_new"
46
+ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/ name "$name"
47
+ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/ command "$command"
48
+ gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom${num}/ binding "$shortcut"
49
+ }
50
+
51
+ gshort $1 $2 $3
@@ -5,7 +5,7 @@ Exercise
5
5
  Running
6
6
  Push-ups
7
7
  Yoga
8
- Set Up NowFocus
8
+ Set Up nowfocus
9
9
  1 Open Settings
10
10
  3 Add your real Todo List(s)
11
11
  2 Set up your Time Tracker(s)
@@ -0,0 +1,91 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="48"
6
+ height="48"
7
+ viewBox="0 0 12.7 12.7"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="matrix(1.0567177,0,0,1.0567177,-0.36015771,-0.36015771)">
17
+ <rect
18
+ style="display:none;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.316;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
19
+ id="rect1"
20
+ width="9.5708742"
21
+ height="9.5708742"
22
+ x="1.5645629"
23
+ y="1.5645629" />
24
+ <rect
25
+ style="display:none;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.915798;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
26
+ id="rect38"
27
+ width="9.5708742"
28
+ height="9.5708742"
29
+ x="1.5645629"
30
+ y="1.5645629"
31
+ ry="3.110863" />
32
+ <rect
33
+ style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.915798;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
34
+ id="rect2"
35
+ width="9.5708742"
36
+ height="9.5708742"
37
+ x="1.5645629"
38
+ y="1.5645629"
39
+ ry="4.7854371"
40
+ rx="4.7854371" />
41
+ </g>
42
+ <g
43
+ id="layer2"
44
+ style="display:inline">
45
+ <path
46
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
47
+ d="M 6.3410664,6.36546 4.4335013,4.0522236"
48
+ id="path2" />
49
+ <path
50
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
51
+ d="M 6.37713,6.3615649 11.260009,1.2965066"
52
+ id="use31" />
53
+ <path
54
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
55
+ d="M 6.3610066,6.3773634 13.39526,6.248543"
56
+ id="use32" />
57
+ <path
58
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
59
+ d="m 6.338434,6.3771308 5.065058,4.8828782"
60
+ id="use33" />
61
+ <path
62
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
63
+ d="M 6.322637,6.3610073 6.4514574,13.395261"
64
+ id="use34" />
65
+ <path
66
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
67
+ d="M 6.322869,6.3384356 1.4399903,11.403494"
68
+ id="use35" />
69
+ <path
70
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
71
+ d="M 6.3389932,6.3226376 -0.69526049,6.451458"
72
+ id="use36" />
73
+ <path
74
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
75
+ d="M 6.3615647,6.3228685 1.2965064,1.4399898"
76
+ id="use37" />
77
+ <path
78
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
79
+ d="M 6.3773615,6.3389927 6.2485411,-0.69526102"
80
+ id="use38" />
81
+ </g>
82
+ <g
83
+ id="layer3"
84
+ style="display:inline">
85
+ <path
86
+ style="font-weight:bold;font-size:10.4396px;line-height:1.25;font-family:'Besley*';-inkscape-font-specification:'Besley*, Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.198419"
87
+ d="m 5.2723149,3.6126858 c 0,-0.040213 0.03016,-0.080427 0.1005332,-0.1407465 0.06032,-0.06032 0.1709064,-0.1105865 0.3116529,-0.1507998 0.1407465,-0.040213 0.2915463,-0.070373 0.4624528,-0.070373 0.4121862,0 0.6936791,0.1105865 0.8545323,0.3317595 0.1507998,0.2211731 0.2312264,0.5428794 0.2312264,0.9550655 0,0.4222395 -0.1206399,0.7640524 -0.3518663,1.0254388 -0.2412797,0.2613863 -0.5830926,0.4825594 -1.0254387,0.6434125 -0.03016,0.020106 -0.080427,0.040213 -0.1608531,0.06032 -0.080427,0.020106 -0.1306932,0.040213 -0.1407465,0.050267 -0.020106,0.010054 -0.040213,0.03016 -0.080427,0.070373 -0.040213,0.040213 -0.06032,0.080427 -0.06032,0.1407464 -0.010054,0.06032 -0.010054,0.1306932 -0.010054,0.2211731 v 0.8243723 c 0,0.080427 0.010054,0.1407465 0.050267,0.1608532 0.03016,0.020106 0.1005332,0.03016 0.2211731,0.03016 h 0.9852264 c 0.1608531,0 0.2613863,-0.010054 0.3015996,-0.040213 C 6.991433,7.6943348 7.01154,7.603855 7.01154,7.4430018 V 6.9906026 c 0,-0.070373 0,-0.1306932 0.010054,-0.1809598 0,-0.040213 0.010054,-0.080427 0.020106,-0.1105865 0.010054,-0.020106 0.03016,-0.050267 0.06032,-0.070373 0.03016,-0.020106 0.050267,-0.03016 0.070373,-0.040213 0.020106,0 0.050267,-0.010054 0.1105865,-0.03016 0.06032,-0.010054 0.1005332,-0.020106 0.1407465,-0.040213 C 7.9263916,6.3572424 8.3184711,6.1159627 8.6100174,5.7842031 8.9015637,5.4624969 9.0523635,5.0402574 9.0523635,4.5375913 c 0,-0.6233059 -0.221173,-1.1159186 -0.6635191,-1.4778381 -0.4423462,-0.3518663 -1.1159187,-0.532826 -2.0408242,-0.532826 -0.8042657,0 -1.4376249,0.2111197 -1.8900243,0.6132525 -0.4624528,0.4121862 -0.6836258,0.8746389 -0.6836258,1.3873583 0,0.3418129 0.090479,0.6132526 0.2915463,0.814319 0.2010664,0.2010664 0.4423461,0.3015996 0.7338924,0.3015996 0.2714397,0 0.502666,-0.080427 0.6936791,-0.251333 0.1809598,-0.1709064 0.281493,-0.3920795 0.281493,-0.6534658 0,-0.2010665 -0.050267,-0.3820262 -0.1306931,-0.5428794 C 5.5638612,4.0349253 5.4733813,3.9142854 5.3929547,3.8238056 5.3125282,3.7333257 5.2723149,3.6629524 5.2723149,3.6126858 Z m -0.050267,5.8510328 c 0,0.2814929 0.090479,0.5127198 0.2915463,0.7137864 0.2010664,0.201066 0.4322928,0.291546 0.7137858,0.291546 0.2714396,0 0.502666,-0.09048 0.7037324,-0.291546 C 7.1321792,9.9764384 7.2327125,9.7452115 7.2327125,9.4637186 7.2327125,9.1922789 7.1321792,8.9610525 6.9311128,8.7599861 6.7300464,8.5589197 6.49882,8.4583865 6.2273804,8.4583865 c -0.281493,0 -0.5127194,0.1005332 -0.7137858,0.3015996 C 5.3125282,8.9610525 5.2220483,9.1922789 5.2220479,9.4637186 Z"
88
+ id="text38"
89
+ aria-label="?" />
90
+ </g>
91
+ </svg>
@@ -0,0 +1,91 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="48"
6
+ height="48"
7
+ viewBox="0 0 12.7 12.7"
8
+ version="1.1"
9
+ id="svg1"
10
+ xmlns="http://www.w3.org/2000/svg"
11
+ xmlns:svg="http://www.w3.org/2000/svg">
12
+ <defs
13
+ id="defs1" />
14
+ <g
15
+ id="layer1"
16
+ transform="matrix(1.0567177,0,0,1.0567177,-0.36015771,-0.36015771)">
17
+ <rect
18
+ style="display:none;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.316;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
19
+ id="rect1"
20
+ width="9.5708742"
21
+ height="9.5708742"
22
+ x="1.5645629"
23
+ y="1.5645629" />
24
+ <rect
25
+ style="display:none;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.915798;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
26
+ id="rect38"
27
+ width="9.5708742"
28
+ height="9.5708742"
29
+ x="1.5645629"
30
+ y="1.5645629"
31
+ ry="3.110863" />
32
+ <rect
33
+ style="display:inline;opacity:1;fill:none;fill-opacity:1;stroke:#ffffff;stroke-width:0.915798;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
34
+ id="rect2"
35
+ width="9.5708742"
36
+ height="9.5708742"
37
+ x="1.5645629"
38
+ y="1.5645629"
39
+ ry="4.7854371"
40
+ rx="4.7854371" />
41
+ </g>
42
+ <g
43
+ id="layer2"
44
+ style="display:inline">
45
+ <path
46
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
47
+ d="M 6.3410664,6.36546 4.4335013,4.0522236"
48
+ id="path2" />
49
+ <path
50
+ style="display:inline;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
51
+ d="M 6.37713,6.3615649 11.260009,1.2965066"
52
+ id="use31" />
53
+ <path
54
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
55
+ d="M 6.3610066,6.3773634 13.39526,6.248543"
56
+ id="use32" />
57
+ <path
58
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
59
+ d="m 6.338434,6.3771308 5.065058,4.8828782"
60
+ id="use33" />
61
+ <path
62
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
63
+ d="M 6.322637,6.3610073 6.4514574,13.395261"
64
+ id="use34" />
65
+ <path
66
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
67
+ d="M 6.322869,6.3384356 1.4399903,11.403494"
68
+ id="use35" />
69
+ <path
70
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
71
+ d="M 6.3389932,6.3226376 -0.69526049,6.451458"
72
+ id="use36" />
73
+ <path
74
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
75
+ d="M 6.3615647,6.3228685 1.2965064,1.4399898"
76
+ id="use37" />
77
+ <path
78
+ style="display:none;fill:none;stroke:#ffffff;stroke-width:1.465;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:none;stroke-opacity:1"
79
+ d="M 6.3773615,6.3389927 6.2485411,-0.69526102"
80
+ id="use38" />
81
+ </g>
82
+ <g
83
+ id="layer3"
84
+ style="display:none">
85
+ <path
86
+ style="font-weight:bold;font-size:10.4396px;line-height:1.25;font-family:'Besley*';-inkscape-font-specification:'Besley*, Bold';letter-spacing:0px;word-spacing:0px;fill:#ffffff;stroke-width:0.206043"
87
+ d="m 5.2284722,3.5018237 c 0,-0.041758 0.031319,-0.083517 0.104396,-0.1461544 0.062638,-0.062638 0.1774732,-0.1148356 0.3236276,-0.156594 0.1461544,-0.041758 0.3027484,-0.073077 0.4802216,-0.073077 0.4280236,0 0.7203324,0.1148356 0.887366,0.3445068 0.156594,0.2296712 0.2401108,0.5637384 0.2401108,0.991762 0,0.4384632 -0.1252752,0.7934096 -0.365386,1.0648392 C 6.6482578,5.7985359 6.2933114,6.0282071 5.833969,6.1952407 5.80265,6.2161197 5.750452,6.2369987 5.6669354,6.2578787 5.5834184,6.2787577 5.5312206,6.2996367 5.520781,6.3100767 5.499902,6.3205167 5.479023,6.3413957 5.437264,6.3831537 5.395506,6.4249117 5.374626,6.4666707 5.374626,6.5293081 5.364186,6.5919461 5.364186,6.6650229 5.364186,6.7589793 v 0.8560472 c 0,0.083517 0.01044,0.1461544 0.052198,0.1670336 0.031319,0.020879 0.104396,0.031319 0.2296712,0.031319 H 6.669137 c 0.1670336,0 0.2714296,-0.01044 0.313188,-0.041758 0.031319,-0.031319 0.052198,-0.1252752 0.052198,-0.2923088 v -0.469782 c 0,-0.073077 0,-0.1357148 0.01044,-0.1879128 0,-0.041758 0.01044,-0.083517 0.020879,-0.1148356 0.01044,-0.020879 0.031319,-0.052198 0.062638,-0.073077 0.031319,-0.020879 0.052198,-0.031319 0.073077,-0.041758 0.020879,0 0.052198,-0.01044 0.1148356,-0.031319 0.062638,-0.01044 0.104396,-0.020879 0.1461544,-0.041758 C 7.9845266,6.3518345 8.391671,6.1012841 8.6944194,5.7567773 8.9971678,5.4227101 9.1537618,4.9842469 9.1537618,4.4622669 9.1537618,3.8150117 8.9240906,3.3034713 8.4647482,2.9276457 8.0054058,2.5622597 7.3059526,2.3743469 6.3455094,2.3743469 c -0.835168,0 -1.4928628,0.2192316 -1.9626448,0.6368156 -0.4802216,0.4280236 -0.7098928,0.9082452 -0.7098928,1.4406648 0,0.3549464 0.093956,0.6368156 0.3027484,0.8456076 0.208792,0.208792 0.4593424,0.313188 0.7620908,0.313188 0.2818692,0 0.52198,-0.083517 0.7203324,-0.26099 0.1879128,-0.1774732 0.2923088,-0.4071444 0.2923088,-0.678574 0,-0.208792 -0.052198,-0.3967048 -0.1357148,-0.5637384 C 5.5312206,3.9402869 5.4372642,3.8150117 5.3537474,3.7210553 5.2702306,3.6270989 5.2284722,3.5540217 5.2284722,3.5018237 Z m -0.052198,6.0758472 c 0,0.2923088 0.093956,0.5324201 0.3027484,0.7412121 0.208792,0.208792 0.4489028,0.302748 0.7412116,0.302748 0.2818692,0 0.52198,-0.09396 0.730772,-0.302748 0.208792,-0.208792 0.313188,-0.4489033 0.313188,-0.7412121 0,-0.2818692 -0.104396,-0.52198 -0.313188,-0.730772 -0.208792,-0.208792 -0.4489028,-0.313188 -0.730772,-0.313188 -0.2923088,0 -0.5324196,0.104396 -0.7412116,0.313188 -0.208792,0.208792 -0.3027484,0.4489028 -0.3027484,0.730772 z"
88
+ id="text38"
89
+ aria-label="?" />
90
+ </g>
91
+ </svg>