{ "info": { "author": "David Steele", "author_email": "dsteele@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)", "Natural Language :: English", "Operating System :: MacOS", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX :: Linux", "Programming Language :: Python :: 3 :: Only", "Topic :: Other/Nonlisted Topic" ], "description": "# todo.txt-gtd\nMy recipe for customizing a [**todo.txt**](http://todotxt.org/) environment for\n[**Getting Things Done**](https://gettingthingsdone.com/).\n\n[Installing](#Installing)\n\n# Scripts\n\n## The Cleanup Script\n\nGiven the following text in the file _~/Dropbox/todo/todo.txt_:\n\n Get an oil change @errands +CarMaintenance\n Get a Haircut @errands +Grooming\n Check the car battery water level @home +CarMaintenance\n\n... running the _tdtcleanup_ script will convert that file to this:\n\n\n # CarMaintenance\n #\n\n Get an oil change @errands +CarMaintenance\n Check the car battery water level @home +CarMaintenance\n\n # Grooming\n #\n\n Get a Haircut @errands +Grooming\n\n # _None\n #\n\n\nNow _todo.txt_ can be treated as a comprehensive Projects file. Tasks are\norganized by Project, and arbitrary text related to projects can be added\nas comments.\n\nA '#' comment consisting of a single word is a Project Header, defining the\ndefault project for following tasks. The final *_None* project is special -\nit collects tasks that are added using various **todo.txt** applications.\n\nOn subsequent runs, _tdtcleanup_ will do the following:\n\n* Sort Project Sections alphabetically, by Project Name\n* Add the '+' project tag to any tasks in a Project Section that don't already have one. A task is defined here as a line of text that includes an '@' context. This processing doesn't happen in the *_None* section.\n* Move tasks to the proper Project Section, if they aren't already there. The Section is created, using a Project Header, if necessary.\n\n## The Context Listing Script\n\nThe _tdtlist_ script lists the tasks in todo.txt, by context.\n\nIf you process either of the above todo.txt files through _tdtlist_, it will output the following\n\n @errands\n\n Get an oil change @errands +CarMaintenance\n Get a Haircut @errands +Grooming\n\n @home\n\n Check the car battery water level @home +CarMaintenance\n\nThe list is saved in text and LibreOffice \".odt\" formats. It can be optionally\nautomatically opened after it is created.\n\n## The Project script\n\nThe _tdtproj_ script supports working with a single project, or group of projects. It opens an\nedit session with just the specified project section from the todo.txt file, and replaces that\nsection after the session is complete.\n\nIf all of the lines are deleted from the edit session, no changes are made to the original\ntodo.txt file. If just the header line is kept, all other lines are deleted from the original.\n\nRun _tdtproj_ with the \"-l\" option to get a current list of projects.\n\nA bash completion script is available that responds to tab completion with an appropriate project\nlist.\n\n## The Backup script\n\n_tdtbackup_ is a utility script for making rotating backups of the todo.txt file.\n\n# Working with a GTD todo.txt\n\nAlways add an '@' context to tasks, to put them on the proper GTD list, and to identify them to _tdtcleanup_.\n\nEither add '+' project name to individual tasks, or physically move them to the appropriate Project Section.\n\nAdd comments, as necessary, to fully document each Project.\n\nFor the Weekly Review:\n\n* Run _tdtcleanup_\n* Delete completed tasks\n* Update the '@~' -> '@' context on multi-step tasks as necessary\n* Add tasks and '+' project tags, as needed\n* Run _tdtcleanup_ again\n\nI've found that running \"``for proj in `tdtproj -l`; do tdtproj $proj; done``\" is a mind-clearing way to\naccomplish this.\n\n# Configuring Existing todo.txt Apps\n\nFilter on '@' to limit your task lists to just tasks. I use a '\\~' as a special context flag (e.g. '@\\~errands') for tasks that cannot be performed yet due to an uncompleted previous step. If you pick up this convention, you may want to filter out '@~' from your lists as well.\n\nAvoid the 'archive' operation. This typically will remove duplicate lines in _todo.txt_. This can wreak havoc on formatting, eliminating white space and empty comment lines in the file.\n\n# Specific Todo.txt Apps for GTD\n\nI've used the classic [todo.txt CLI](https://todotxt.org/) with success. As mentioned previously, avoid the archive operation.\n\nI've come to prefer [ToPydo](https://pypi.org/project/topydo/), for its support\nof [threshold dates and recurrance](https://github.com/mpcjanssen/simpletask-android/blob/master/app/src/main/assets/extensions.en.md). Note that it needs a [small change](https://github.com/davesteele/topydo/commit/fafee24beb4718f375a921f3b4772c5fea37d7ac) to avoid eliminating blank lines. Make sure to use the '-a' option to disable auto-archive on task completion.\n\n[SimpleTask](https://play.google.com/store/apps/details?id=nl.mpcjanssen.todotxtholo&hl=en_US) works well on Android. Make a \"Current Tasks\" filter with the \"List\" tab consisting of a checked \"Invert Filter\" box, plus check \"-\" and all contexts you want to eliminate (e.g. \"someday\").\n\nRun 'tdtlist -l' for a printable todo list, for offline use.\n\nOf course, a primary way of interacting with the todo list is by editing the todo.txt file directly.\n\nMy .bashrc to support todo.txt:\n\n alias vitodo='vim ~/Dropbox/todo/todo.txt; tdtcleanup'\n alias cdtodo='cd ~/Dropbox/todo/'\n alias todo='topydo -a -t ~/Dropbox/todo/todo.txt'\n\nAnd my cron:\n\n 0 2 * * * tdtbackup; tdtcleanup; tdtlist\n\n\n\n# Installing\n\nThe [Deb package](https://davesteele.github.io/todo.txt-gtd/deb/index.html):\n\n sudo apt-get update\n sudo dpkg -i tdtgtd*.deb\n sudo apt-get -f install\n\n[pip](https://pypi.org/project/todo.txt-gtd/) install:\n\n pip install todo.txt-gtd\n\n# Usage\n\n $ tdtcleanup -h\n usage: tdtcleanup [-h] [-f FILE]\n\n Clean up the todo.txt file in a GTD fashion\n\n optional arguments:\n -h, --help show this help message and exit\n -f FILE, --file FILE the todo.txt file location (defaults to\n ~/Dropbox/todo/todo.txt)\n\n---\n\n $ tdtlist -h\n usage: tdtlist [-h] [-f FILE] [-l] [TERM [TERM ...]]\n\n List the tasks in todo.txt, by @category\n\n positional arguments:\n TERM search terms to filter the reported tasks\n\n optional arguments:\n -h, --help show this help message and exit\n -f FILE, --file FILE the todo.txt file location (defaults to\n ~/Dropbox/todo/todo.txt)\n -l, --launch open the task list, after creating\n\n Process the todo.txt file, and save tasks lists, by context, in text and\n LibreOffice formats. The lists are saved in the same directory as todo.txt.\n Optionally, the LibreOffice list can be automatically opened.\n\n---\n\n $ tdtproj -h\n usage: tdtproj [-h] [-f FILE] [-l] [TERM [TERM ...]]\n\n Work with one or more GTD projects in todo.txt\n\n positional arguments:\n TERM search terms to filter the project(s) to use\n\n optional arguments:\n -h, --help show this help message and exit\n -f FILE, --file FILE the todo.txt file location (defaults to\n ~/Dropbox/todo/todo.txt)\n -l, --list just list the projects in the current todo.txt file\n\n Edit one or more isolated projects in a todo.txt file (todo.txt projects are\n denoted by a a leading \"+\"). If the entire project is deleted during the edit\n session, the original project is preserved in todo.txt. If just the Project\n Header line is kept, then the project is deleted in the original. The default\n text editor, set by 'update-alternatives', is used. This can be overridden by\n setting the 'EDITOR' environment variable.\n\n---\n\n $ tdtbackup -h\n usage: tdtbackup [-h] [-f FILE] [-b BACKUPDIR] [-n NUM]\n\n Back up the todo.txt todo.txt file\n\n optional arguments:\n -h, --help show this help message and exit\n -f FILE, --file FILE the todo.txt file location (defaults to Dropbox)\n -b BACKUPDIR, --backupdir BACKUPDIR\n the backup location (defaults to \"todo/backup\" in\n Dropbox)\n -n NUM, --num NUM the number of backup files to keep (defaults to 14)\n\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/davesteele/todo.txt-gtd", "keywords": "", "license": "GPL 2.0", "maintainer": "", "maintainer_email": "", "name": "todo.txt-gtd", "package_url": "https://pypi.org/project/todo.txt-gtd/", "platform": "", "project_url": "https://pypi.org/project/todo.txt-gtd/", "project_urls": { "Homepage": "https://github.com/davesteele/todo.txt-gtd" }, "release_url": "https://pypi.org/project/todo.txt-gtd/0.2/", "requires_dist": [ "configargparse", "docutils" ], "requires_python": "", "summary": "Todo.txt support scripts for GTD.", "version": "0.2" }, "last_serial": 4801114, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "552a653c0f4bc775e6d1fd4a18322cec", "sha256": "d5445f5f6fb314b4241c0b2159aec2e851c58717d1038c71acebd00f67bb8bd4" }, "downloads": -1, "filename": "todo.txt_gtd-0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "552a653c0f4bc775e6d1fd4a18322cec", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17074, "upload_time": "2018-12-18T02:26:55", "url": "https://files.pythonhosted.org/packages/a4/69/47e2852e21120dabe56a2c665ecf492cc99b5ff02e806a9acc2e25371499/todo.txt_gtd-0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "edb89efdbb2ef5063784ddb25f2eac97", "sha256": "8f5411c7f45880c68d93b3667a9d15e8c3f56beb1ad0f270f565dcb26cff22bd" }, "downloads": -1, "filename": "todo.txt-gtd-0.1.tar.gz", "has_sig": false, "md5_digest": "edb89efdbb2ef5063784ddb25f2eac97", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 12122, "upload_time": "2018-12-18T02:26:57", "url": "https://files.pythonhosted.org/packages/61/54/ee362527e9d55c2bbd9008aa87a2f65835dd9b924de5223f9c8a7a1cf51c/todo.txt-gtd-0.1.tar.gz" } ], "0.2": [ { "comment_text": "", "digests": { "md5": "20ebd71572fcec9a2551117b0a17cf1e", "sha256": "9782652c4823c3062fd7ef62151d2767e190877c89c7f1549c74a22f28c81104" }, "downloads": -1, "filename": "todo.txt_gtd-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "20ebd71572fcec9a2551117b0a17cf1e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17943, "upload_time": "2019-02-10T03:07:56", "url": "https://files.pythonhosted.org/packages/a8/31/4eee29a9f92705a3c3e0bd5c7faad048ac1a4f0e9be64eb441a31e9d7360/todo.txt_gtd-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a763a76535e827221efec7588d822f6e", "sha256": "b4736f73c932979729f7dd2e91e1dea4d0a1331c4b624361fd72cc2a6da9d9d7" }, "downloads": -1, "filename": "todo.txt-gtd-0.2.tar.gz", "has_sig": false, "md5_digest": "a763a76535e827221efec7588d822f6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22949, "upload_time": "2019-02-10T03:07:58", "url": "https://files.pythonhosted.org/packages/0c/d1/978faa6ca42012838225ffc3f3f13548130567f9de0dd41b97977dcf4d5f/todo.txt-gtd-0.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "20ebd71572fcec9a2551117b0a17cf1e", "sha256": "9782652c4823c3062fd7ef62151d2767e190877c89c7f1549c74a22f28c81104" }, "downloads": -1, "filename": "todo.txt_gtd-0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "20ebd71572fcec9a2551117b0a17cf1e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 17943, "upload_time": "2019-02-10T03:07:56", "url": "https://files.pythonhosted.org/packages/a8/31/4eee29a9f92705a3c3e0bd5c7faad048ac1a4f0e9be64eb441a31e9d7360/todo.txt_gtd-0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a763a76535e827221efec7588d822f6e", "sha256": "b4736f73c932979729f7dd2e91e1dea4d0a1331c4b624361fd72cc2a6da9d9d7" }, "downloads": -1, "filename": "todo.txt-gtd-0.2.tar.gz", "has_sig": false, "md5_digest": "a763a76535e827221efec7588d822f6e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22949, "upload_time": "2019-02-10T03:07:58", "url": "https://files.pythonhosted.org/packages/0c/d1/978faa6ca42012838225ffc3f3f13548130567f9de0dd41b97977dcf4d5f/todo.txt-gtd-0.2.tar.gz" } ] }