Skip to content

c6p/logseq-habit-tracker

Repository files navigation

If you like this plugin, you can buy me a ☕ here

Logseq Habit Tracker

image image

Record your habits under #habit block in daily journal, then easily track your habits.

Click on gear (⚙️) icon to edit settings.

  • Habit marker is a keyword to match habits: #habit, it was Habits before v0.2.0

  • Habit pattern is the regex to parse habits. See Customization for more examples.
    Default format is Habit text - 1,2,3 and you can add notes after a new line. ^(TODO|DONE)?\s*(?<habit>.*?)(?:| - (?:(?<int>\d*?) times|(?<count>.*?)))$,

    • habit is the identifier for the habit and
    • count is comma separated list of things (e.g. numbers, time)
    • int is integer count in special format. i.e 5 times
  • Ignore Pattern is the regex to ignore habits matching the habitPattern.
    Default value is TODO .*. So while DONE blocks count TODO blocks not.

  • Date format: D.M\ndd where \n is new line.

  • Date width: 2em

For Frequency / Period, period is one of d (day), w (week), m (month), y (year).

  • 3/d means 3 times per day
  • 4/2w means 4 times in 2 weeks

By checking At Most you can model bad habits to avoid.

Customization

Instead of nesting under #habit tag you can also use it in every line and change the format to suit your needs.

Example 1

14:10 pushups #habit
14:11 #habit drink water

Habit Pattern: \d{2}:\d{2} (?<habit>.*)

Example 1a

With optional time and notes. Thanks @someinternetguy

pushups #habit
pushups #habit did 10 more than usual today, go me!
14:17 pushups #habit
14:17 pushups #habit yay, I remembered to work out today!

Habit pattern: ((\d{2}:\d{2})|())(?<habit>.*#habit(\s|\b))

Example 2

Ignore habits with unfinished marker. See #10

- #habit
  - qwer - 1,2
  - qwe
  - qwert - X 

Ignore pattern: .*- X will ignore habit qwert

Running the Plugin

  • pnpm && pnpm build in terminal to install dependencies.
  • Load unpacked plugin in Logseq Desktop client.

Attribution