{"id":17316677,"url":"https://github.com/mlowicki/termtodo","last_synced_at":"2026-05-06T07:35:06.378Z","repository":{"id":57537815,"uuid":"260262034","full_name":"mlowicki/termtodo","owner":"mlowicki","description":"Minimalistic yet powerful command-line todo app for your console.","archived":false,"fork":false,"pushed_at":"2020-05-19T16:00:20.000Z","size":4909,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-01T07:41:12.977Z","etag":null,"topics":["cli","cron","go","raspberry-pi","tmux","todo"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mlowicki.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-04-30T16:27:36.000Z","updated_at":"2021-03-13T19:08:42.000Z","dependencies_parsed_at":"2022-08-29T00:41:54.764Z","dependency_job_id":null,"html_url":"https://github.com/mlowicki/termtodo","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlowicki%2Ftermtodo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlowicki%2Ftermtodo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlowicki%2Ftermtodo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mlowicki%2Ftermtodo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mlowicki","download_url":"https://codeload.github.com/mlowicki/termtodo/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245767361,"owners_count":20668827,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","cron","go","raspberry-pi","tmux","todo"],"created_at":"2024-10-15T13:13:45.263Z","updated_at":"2026-05-06T07:35:06.316Z","avatar_url":"https://github.com/mlowicki.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# termtodo [![Build Status](https://travis-ci.com/mlowicki/termtodo.svg?token=Wu2ZDxNBSqPxs4JUg6tc\u0026branch=master)](https://travis-ci.com/mlowicki/termtodo)\n\nMinimalistic todo app for your terminal.\n\n![terminal session](/session.gif)\n\n## Features\n* One-time or recurring triggers (using cron syntax) defining when todo should be created\n* Integration with [Blinkt!](https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-blinkt) for notifications on Raspberry Pi\n\n![Blinkt! alert](/alert.gif)\n\n* Easy to integrate with terminal multiplexers like tmux\n* Efficient command-line interface\n* All data stored locally\n\n## Installation\n\n### From source\n1. Install [Go](https://golang.org/doc/install)\n2.\n```\n$ git clone git@github.com:mlowicki/termtodo.git\n$ cd termtodo\n$ go build -tags raspbian // pass this tag only on Raspbian\n$ ./termtodo\n```\n\n## Commands\n\n### a(dd)\nCreate a trigger that adds todo either once or regularly.\n\nCall Mom in 10 minutes:\n```\n:a +10m \"call mom\"\n```\n\nDrink coffee at 9:00:\n```\n:a @9:00 \"coffee with Joe\"\n```\n\nDo your workout at 10:00 every weekday:\n```\n:add \"0 10 * * 0-5\" workout\n```\n\n\nSee [Time formats](#time-formats) for a list of all supported formats.\n\n### r(m)\nDelete todo or trigger, depending on the active view. Accepts optional selector to specify the item to remove:\n* If the selector is missing, then the first item from the top will be erased.\n* If the selector is `*`, then all items will be removed.\n* Otherwise selector is interpreted as a number.\n\nDelete the first todo from the list (number 1):\n```\n:r\n```\n\nDelete todo #4:\n```\n:r 4\n:rm 4\n```\n\nDelete all todos:\n```\n:r *\n```\n### s(nooze)\nPostpone todo. Accepts optional selector to specify the todo to re-schedule:\n* If the selector is missing, then the first item from the top will be erased.\n* If the selector is `*`, then all todos will be removed.\n* Otherwise selector is interpreted as a number.\n\nSnooze the first todo for 1h (trigger in 60 minutes):\n```\n:s +1h\n```\n\nTrigger todo again at 11:00:\n```\n:s @11:00\n```\n\nRe-schedule todo #4 in 4 minutes:\n```\n:s +1m 4\n```\n\nSnooze todo #2 for 20 minutes:\n```\n:snooze +20m 2\n```\n\nSnooze all todos for 20 minutes:\n```\n:s +20m *\n```\n\n\nSee [Time formats](#time-formats) for a list of all supported formats. Snooze command supports one-time triggers only, so it doesn't support cron format.\n\n### to(dos)\nShow things to do (default view).\n\n```\n:to\n:todos\n```\n### tr(iggers)\nShow schedules for todos.\n\n```\n:tr\n:triggers\n```\n### q(uit) or \\\u003cctrl-c\\\u003e\nQuit program.\n\n```\n:q\n:quit\n:\u003cctrl-c\u003e\n```\n\n## Time formats\n\n### Relative time\n```\n\\+(\\d+)[smhd]\n```\n\nWhere `smhd` stands for seconds, minutes, hours and days, respectively.\n\nIn 10 seconds:\n```\n+10s\n```\n\nIn 4 days:\n```\n+4d\n```\n\n### Absolute time\n\nAt a specific time of the current day:\n```\n@\\d{2}:\\d{2}\n```\n\nExamples:\n```\n@10:00\n@23:15\n@9:10\n```\n\n### Cron\n\nDefine recurring event. It's implemented by:\n```\ncron.NewParser(cron.SecondOptional | cron.Minute | cron.Hour | cron.Dom | cron.Month | cron.Dow | cron.Descriptor)\n```\n(see https://godoc.org/github.com/robfig/cron#hdr-Alternative_Formats for more details)\n\nAt 10:00 every weekday:\n```\n0 10 * * 0-5\n```\n\nEvery 10 seconds:\n```\n*/10 * * * * *\n```\n(adding seconds is an extension, so it requires an additional 6th field)\n\nEvery hour:\n```\n@hourly\n@every 1h\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlowicki%2Ftermtodo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmlowicki%2Ftermtodo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmlowicki%2Ftermtodo/lists"}