Skip to content

simon-danielsson/mmry

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

mmry

CLI markdown reminders.

MIT License Last commit C

InfoInstallUsage
ScreenshotsLicense


Info

'mmry' is a small C program built for reminding you about certain things - no SQL database or json files, just a simple markdown file that is parsed at every launch. Inspired by the Emacs org-mode agenda system.

This program is not meant to be executed manually (though you can of course do that too!) - instead, it is designed to be added to your .bashrc (or similar) so that it runs each time you open the terminal.


Install

Clone this repository and build from source using the bundled run.py script.

./run.py release

An executable will have been generated inside ./build/release.


Usage

Setup

You will feed the executable with a markdown file. Here is a bash alias that streamlines this (you will obviously have to change the paths to match the location of the executable/markdown-file on your machine). Then you can execute this alias at startup to stay up-to-date on all your reminders! I have added a check for the $NVIM variable so that 'mmry' doesn't run when I open the terminal within neovim.

# ~/.bashrc (or ~/.bash_aliases etc.)

alias mmry="~/dev/c/mmry/build/install/* ~/notes/.mmry.md"
if [[ -z "$NVIM" ]]; then
    mmry
fi

Syntax

There are three different item types:

  • event: a singular event
  • repeat: a repeating event
  • todo: an event with a true/false state

The 'lead' variable
Each item can take a 'lead' variable that dictates how many days before its scheduled time it should start appearing in the 'mmry' list. The 'lead' variable can be omitted and will in that case default to a lead-time of 7 days.

The 'date' variable
The date variable must follow the "YYYY-MM-DD" format - specific times such as the hour, minutes, seconds, as well as time-zones, are not supported.

Omissions

  • Todo items set to 'false' (i.e done) are omitted from the list.
  • Events that have passed their scheduled dates are omitted from the list.
  • Item content/bodies longer than 5 lines are omitted from the list.

Examples

# It's someone's birthday!
{ repeat(365) date(1992-08-10) lead(30) }

# Do the laundry
{ repeat(14) date(2025-01-01) lead(4) }

Blacks and other darks are already done.
Just the white to go.

# Buy groceries
{ todo(true) date(2025-07-02) }

- Milk
- Bread
- Snus

# A rock concert
{ event date(2027-02-06) lead(45) }

This concert will be out of town.

# Write a new blog post
{ todo(false) date(2025-08-02) }

Screenshots

screenshot


License

This project is licensed under the MIT License.