nowfocus: the open source task-tracking self-control panel.
Project description
Nowfocus
Open-source task timer for Linux
Avoid multifailing. Master your todo lists. Track your time.
Nowfocus is a clean, keyboard-driven time management dashboard that flexibly connects multiple todo lists with multiple time trackers and displays your current task and time spent in the status bar.
Features
- Unlimited, flexible combinations of todo lists and time tracking apps
- Inactivity detection that automatically pauses time tracking
- Task prioritization
- Infinitely nestable lists
- Pomodoro timer
- Time targets: set a minimum or maximum time for any task or list of tasks and get reminded to follow-through
- Randomness interrupt bell (optional) to keep you on track with tracking your time
- Keyboard-driven interface
- Offline todo list cache
- CLI interface
- Run a command (or launch an application) when a task is started
- Not built with Electron ♥
- Follows system dark-mode
- Lightening fast task search
|
|
|
|
|
Currently Supported Todo List Backends
- Trello
- TaskWarrior
- todo.txt format
- Vikunja
- Photosynthesis Timetracker
- Simple text file with indentation-based sub-lists
- Any todo list that supports CalDav todos
Currently Supported Time Tracker Backends
Installation
-
Run the following in terminal:
# Install dependencies sudo apt install pipx gir1.2-ayatanaappindicator3-0.1 libgirepository1.0-dev gcc libcairo2-dev pkg-config python3-dev xprintidle # Set up pipx (not necessary if you already use pipx) pipx ensurepath source ~/.bashrc # Install pipx install nowfocus # and now Focus! nowfocus -
Check for errors, if all looks good you can leave terminal running or quit Nowfocus with
Ctrl + Con the terminal and launch Nowfocus from your app launcher menu. -
Set up a keybinding (on Ubuntu or Linux Mint), open System Settings > Keyboard > Keyboard Shortcuts > Custom Shortcuts, set the keystroke to
Ctrl + Space(or the combination of your choice) set the command to:bash -c "echo 'open_task_window' > /tmp/nowfocus-pipe"
Updating
- Quit Nowfocus from the system tray menu
- Run the following command in terminal:
pipx upgrade nowfocus - Start Nowfocus from app launcher
Usage
Set up todo lists and time trackers:
Open Nowfocus > Settings > Todo lists and Time Trackers pick the type of backend you'd like to add from Connect a new todo lists menu click go and fill in the necessary fields.
Task Window Keybindings
F11Toggle fullscreenEscClose task windowEnterStart top/selected task (or make a new task with current search phrase if no results)Shift EnterorShift ClickTransfer current session time to selected task (or top task if none selected)Control EnterorControl Clickshow options menu for selected (or top) taskAlt EnterorAlt ClickOpen external todo list for selected (or top) taskConrol + SPause and save current sessionConrol + DPause current session and mark task DoneConrol + QQuit and discard current sessionCtrl + NNew taskCtrl + RRefresh todolistsCtrl + LorCtrl + FFocus the task search
Time Targets
-
From the task window use a tasks right click menu (
Ctrl + Enter) click Set Time Target -
Choose between targeting a maximum and minimum amount of time for the task.
- Max: Task will be displayed as done and a reminder bell will ring one a minute once that amount of time has been spent on th task
- Min: Task will be displayed as priority 1 until the chosen amount of time has been spent on th task
-
To set a target for a list of tasks open Nowfocus > Settings > Time Targets and Add List Time Target. List targets are timed recursively
Task Commands
Task Commands can be used to run your chosen shell command when a task is started. Nowfocus will wait until the process completes (if it is a long running process) and stops timing the task and open when the command finishes.
Warning: Task Commands are run with subprocess.run using shell option, so use at your own risk and please don't enter something stupid! (Also — it's not recommended for sensetive tasks like backups because if Nowfocus crashes the subprocess will be effected.)
To set up a command use Nowfocus > Settings > Task Commands or the task window right click menu for a task.
Commandline Interface
- To raise the task window use simply:
nowfocus - If nowfocus has crashed or failed to shut down nicely use
nowfocus --force - To start timing a task: add the task name as the first positional argument.
nowfocus "checking email" - To stop timing use
nowfocus stop - Start with verbose logging use:
nowfocus -l 3 - Start with targeted verbose logging use:
nowfocus -s trello
Reporting Issues
Open an issue on Codeberg (Please include as much detail as you can.)
Development
Fork nowfocus source code on Codeberg (GPL)
Install From Source
git clone https://codeberg.org/AltruistEnterprises/nowfocus.git
cd nowfocus
python3 -m venv .venv/nowfocus-build
source .venv/nowfocus-build/bin/activate
pip install -r build-requirements.txt
python3 -m build
pipx install -e --force YOUR_INSTALL_PATH
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file nowfocus-0.7.2.tar.gz.
File metadata
- Download URL: nowfocus-0.7.2.tar.gz
- Upload date:
- Size: 408.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8356f7d7f92a2a02218f3defb1c40fe2e1dc2098997a5982a5aa8d217d3b0c80
|
|
| MD5 |
27ceb81f197f5a15a9130d6be4c62460
|
|
| BLAKE2b-256 |
b16070850f91d055204935fb1c048bc82ea1fa66ca1874d956539ae6afc254c8
|
File details
Details for the file nowfocus-0.7.2-py3-none-any.whl.
File metadata
- Download URL: nowfocus-0.7.2-py3-none-any.whl
- Upload date:
- Size: 433.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4d3a00261c659b29737b4898546cd3bb43348cbe0c2da6200f8ac020579cf32c
|
|
| MD5 |
7b847ac895272b632786f93da12b19ed
|
|
| BLAKE2b-256 |
4338f80b2fbb638010edf078a30b6d34b5eaacfe328e4fb297f7b40b3f5c81bd
|