Track and align your focus!
Focus Tracker is an Obsidian plugin for tracking activity, progress, and engagement across your notes over time. It creates a visual timeline that helps you monitor patterns, maintain consistency, and identify gaps in your attention areas.
Focus Tracker helps you:
Track your past and plan your future focus, attention, efforts, and activities so as to better align with the directions you want to go.
One may find this useful as a component of their productivity/task-management system to help decide what areas need more attention in the future based on lack of attention or quality of attention in the past, leading to different prioritization of tasks, or as lead indicators in an OKR framework.
I also find this useful as a component of my ADHD self-management system to help align my hyperfocus with my intent, setting time-block targets, etc..
Add a focus tracker to any note using this code block:
```focustracker
tag-set:
- track/research
- lane/active
```
This will:
#track/research AND #lane/activeOther options let you add metadata columns or customize the structure and appearance of the board.
A "track" in this context, is just the note(s) that you want to view in the dashboard.
Find notes with ANY of these tags:
```focustracker
tags:
- area/health
- area/fitness
Find notes with ALL of these tags:
```focustracker
tag-set:
- status/active
- type/project
Exclude notes with ANY of these tags:
```focustracker
tag-set:
- status/active
- type/project
exclude-tags:
- status/hold
- status/completed
```
Exclude notes with ALL of these tags:
```focustracker
tags:
- area/work
exclude-tag-set:
- status/archived
- status/inactive
```
All tag-based queries support regular expressions, making it powerful to select notes with specific tag patterns. The pattern is matched against the full tag (without the # prefix).
Match tags starting with "area/":
```focustracker
tags:
- ^area/
```
Match any health-related tags:
```focustracker
tags:
- health
- health/.* # Matches health/mental, health/physical, etc.
```
Complex pattern matching:
```focustracker
tag-set:
- ^track/p # Matches track/project, track/personal, etc.
- status/(active|pending) # Matches status/active or status/pending
```
Exclude all archived tracks:
```focustracker
tags:
- ^track/
exclude-tags:
- .*/archived$ # Excludes any tag ending in "archived"
```
```focustracker
# Find active projects but exclude maintenance tasks
tags:
- ^project/.*
exclude-tag-set:
- type/maintenance
- status/(done|archived)
# Track all areas except personal
tags:
- ^area/
exclude-tags:
- area/personal/.*
# Monitor specific project phases
tag-set:
- ^project/
- phase/(planning|execution)
# Complex categorization
tags:
- ^(area|domain)/tech/.* # Matches both area/tech/... and domain/tech/...
exclude-tags:
- .*/legacy$
- status/(hold|blocked)
```
The pattern matching follows regular expression rules, where:
^ matches the start of the tag$ matches the end of the tag. matches any character.* matches zero or more characters| means OR() groups patterns together[] matches any single character from the setSelect files by frontmatter properties:
```focustracker
properties:
status: active
priority: high
```
Select files by path pattern:
```focustracker
paths:
- Projects/Active
- Areas/Health
```
You can combine any selection methods:
```focustracker
paths:
- Projects/
tags:
- status/active
properties:
priority: high
exclude-tags:
- status/hold
```
Add metadata columns from your notes in two ways:
Specify custom display names for columns:
```focustracker
tag-set:
- type/project
prefix-columns:
"Status": status
"Priority Level": priority
"Project Type": project-type
postfix-columns:
"Due Date": due-date
"Assigned To": assigned-to
"Completion %": completion-percentage
```
```focustracker
tag-set:
- type/project
prefix-columns:
"Status": status
"Priority": "#workflow/priority/(.*)"
"Type": "#workflow/type/(.*)"
```
Regular expression captures can be used to pull metadata out of tags. In the above, a note with tags "#workflow/priority/high" and "#workflow/type/review" with have "high" and "review" in columns "Priority" and "Type" respectively.
Uses property names directly as column headers:
```focustracker
tag-set:
- type/project
prefix-columns:
- status
- priority
postfix-columns:
- due-date
- assigned-to
```
The dictionary format allows you to:
Features:
Custom rating symbols and flags can be configured in settings:
```focustracker
rating-map: research # Use research rating set
flag-map: blockers # Use blocker flag set
```
Control which frontmatter property to use as row label:
```focustracker
title-property-names:
- track-label
- focus-tracker-title
- title
```
Ratings (positive numbers) show past effort/focus:
rating-map: "digitsFilled" # Choose from: digitsFilled, colors1, moonPhases
Flags (negative numbers) mark future intentions:
flag-map: "academic" # Choose from: default, academic, project, health, writing
Each domain has contextually appropriate flags:
Add context to any entry:
Global settings (Settings → Focus Tracker):
Per-tracker settings (in codeblock):
```focustracker
paths: "research/"
rating-map: "moonPhases"
flag-map: "academic"
days-past: 14
days-future: 7
```
Use ratings to record past focus and effort:
Use flags to mark future intentions:
```focustracker
paths: "research/projects"
rating-map: "digitsFilled"
flag-map: "academic"
```
```focustracker
paths: "reading/"
rating-map: "moonPhases"
flag-map: "academic"
```
```focustracker
paths: "personal/health"
rating-map: "colors1"
flag-map: "health"
```
```focustracker
paths: "teaching/"
rating-map: "digitsFilled"
flag-map: "academic"
```
Regular Updates
Focus Analysis
Integration
Progressive Adaptation
Found a bug or have a feature request? Please open an issue on GitHub.
Based on Habit Tracker 21, with significant adaptations for focus tracking and planning.
GPL-3.0 License - See LICENSE.md for details.