{"id":22866857,"url":"https://github.com/insomnimus/todo","last_synced_at":"2025-03-31T10:32:15.259Z","repository":{"id":136923441,"uuid":"374682410","full_name":"insomnimus/todo","owner":"insomnimus","description":"A todo app you will actually use, written in rust.","archived":false,"fork":false,"pushed_at":"2021-08-25T19:32:47.000Z","size":71,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-06T14:58:13.359Z","etag":null,"topics":["app","cli","notes","productivity","rust","todo"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/insomnimus.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-06-07T13:48:15.000Z","updated_at":"2021-12-10T10:54:47.000Z","dependencies_parsed_at":null,"dependency_job_id":"20768b4d-d724-4516-8efb-f290010533d6","html_url":"https://github.com/insomnimus/todo","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/insomnimus%2Ftodo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insomnimus%2Ftodo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insomnimus%2Ftodo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/insomnimus%2Ftodo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/insomnimus","download_url":"https://codeload.github.com/insomnimus/todo/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246453468,"owners_count":20779954,"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":["app","cli","notes","productivity","rust","todo"],"created_at":"2024-12-13T12:17:43.635Z","updated_at":"2025-03-31T10:32:15.252Z","avatar_url":"https://github.com/insomnimus.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# todo\n\nTodo is a simple command line note keeping application.\n\n# The Motive\n\nTodo is very simple and definitely not one of the flashy todo apps. But there're reasons for that:\n\n-\tIt doesn't have any distractions and just gets to the point. That means less time spent on configuring everything.\n-\tNote taking and viewing is a command away so it's very convenient to just scratch something or to refresh yourself on your ideas.\n-\tIt won't remind you to do your chores, instead it waits for you to want to be productive. This way, you are more efficient at your work and you procrastinate less.\n\n# Features\n\nTodo's simplicity doesn't make it completely featureless, here is what todo offers:\n\n-\tHooks: you can configure any number of pre/post hooks, depending on the command you ran. Hooks are plain commands you put in the todo's configuration file.\n-\tShell completions: todo comes with shell completions.\n-\tTags: you can put tags to your todos.\n-\tImportance level: You can set an importance level to any todo.\n-\tFilters: you can filter your todos by the name, tag, index or importance level.\n-\tComing soon: git integration (for now you can achieve similar results with the hooks).\n-\tComing soon: Editor integration.\n\n# Installation\n\nTodo is written in rust and is tested with cargo version 1.54.0. You will need an up to date rust environment to compile it.\n\nTodo is not yet published on crates.io but it is planned, meanwhile you can follow any of the following methods to install it.\n\n### Installation with git and cargo\n\n```sh\ngit clone https://github.com/insomnimus/todo\ncd todo\ngit checkout main\ncargo install --path . --locked\n```\n\nThe shell completion files will be written to the project root after cargo installs todo on your system.\n\n### Installation with cargo only (no shell completions)\n\n`cargo install --locked --git https://github.com/insomnimus/todo --branch main`\n\n# Usage\n\nThe usage is pretty straightforward:\n\n```sh\n# create a new todo\ntodo new \"title\" \"body\"\n# create a new todo with tags and an importance level\ntodo new \"title\" \"body\" --tag=tag1,tag2,tag3 --level=2\n# view 5 most recent todos\ntodo\n# view all your todos\ntodo list\n# view todos by their tag\ntodo list -t my_tag\n# search for todos by their title, also using glob patterns\ntodo list \"do *\"\n# remove todos by the title, again using glob but glob is not a requirement\ntodo remove \"mail *\"\n# remove a range of todos (start from the 5th most recent, ending with the 10th most recent)\ntodo remove -i 5:10\n# view todos in reverse order\ntodo list -i=-1:0\n# display 3 random todos\ntodo random 3\n# display 2 random todos that also have the \"project\" tag\ntodo random 2 --tag project\n```\n\nThere are of course more things you can do, please run `todo --help` for the full usage.\n\n# Config File Syntax and Hooks\n\n\nHooks are configured in the todo's config file, which uses the TOML format.\n\nA hook has these fields:\n\n-\t`cmd`: a command and its arguments as an array of strings.\n-\t`working_dir`: the commands working directory as a string. Defaults to the calling processes pwd.\n-\t`silent`: a boolean value indicating whether the command should be silent, defaults to `false`.\n-\t`abort_on_error`: a boolean value indicating whether the other hooks should stop being executed if this hook returns a non-0 exit code. Defaults to `true`.\n\nThe only required field is the `cmd`.\n\n### Hook Types\n\nCurrently there are 4 types of hooks you can set:\n\n-\t`pre_new`: run before the \"new\" command takes effect.\n-\t`post_new`: run after the \"new\" command takes effect.\n-\t`pre_remove`: run before the \"remove\" command takes effect.\n-\t`post_remove`: run after the \"remove\" command  takes effect.\n\n### Some Example Hooks\n\nHooks are defined in the `[hooks]` table in the todo config file.\n\n```toml\n# [...]\n\n[hooks]\n\n[[hooks.pre_new]]\ncmd = [\n\t\"echo\", \"creating new note!\"\n]\n\n[[hooks.post_remove]]\ncmd = [\n\t\"bash\", \"run_git_backup.sh\"\n]\nworking_dir = \"/home/insomnia/notes/\"\nsilent = true\nabort_on_error = false\n```\n\nTo find out where the config file is kept, run `todo where --config`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsomnimus%2Ftodo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finsomnimus%2Ftodo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finsomnimus%2Ftodo/lists"}