{"id":13624684,"url":"https://github.com/tools-life/taskwiki","last_synced_at":"2025-04-16T01:31:52.955Z","repository":{"id":25220847,"uuid":"28645097","full_name":"tools-life/taskwiki","owner":"tools-life","description":"Proper project management with Taskwarrior in vim.","archived":false,"fork":false,"pushed_at":"2024-04-26T12:01:37.000Z","size":1221,"stargazers_count":828,"open_issues_count":132,"forks_count":93,"subscribers_count":17,"default_branch":"master","last_synced_at":"2024-08-01T22:01:58.094Z","etag":null,"topics":["plugin","python","taskwarrior","todolist","vim"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tools-life.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2014-12-30T20:56:19.000Z","updated_at":"2024-07-26T21:48:09.000Z","dependencies_parsed_at":"2024-06-12T08:51:51.739Z","dependency_job_id":null,"html_url":"https://github.com/tools-life/taskwiki","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tools-life%2Ftaskwiki","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tools-life%2Ftaskwiki/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tools-life%2Ftaskwiki/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tools-life%2Ftaskwiki/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tools-life","download_url":"https://codeload.github.com/tools-life/taskwiki/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":223691725,"owners_count":17186872,"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":["plugin","python","taskwarrior","todolist","vim"],"created_at":"2024-08-01T21:01:45.165Z","updated_at":"2024-11-08T13:30:58.625Z","avatar_url":"https://github.com/tools-life.png","language":"Python","readme":"## Taskwiki\n\n_Proper project management in vim.\nStanding on the shoulders of vimwiki and Taskwarrior_\n\n[![GitHub Actions build status](https://github.com/tools-life/taskwiki/workflows/tests/badge.svg?branch=master)](https://github.com/tools-life/taskwiki/actions)\n[![Coverage Status](https://coveralls.io/repos/tools-life/taskwiki/badge.svg?branch=master)](https://coveralls.io/r/tools-life/taskwiki?branch=master)\n[![Code Health](https://landscape.io/github/tbabej/taskwiki/master/landscape.svg?style=flat)](https://landscape.io/github/tbabej/taskwiki/master)\n[![Chat with developers](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/tbabej/taskwiki)\n\n         a         |_   _|_ _ ___| | _\\ \\      / (_) | _(_)         a         ~\n    command-line     | |/ _` / __| |/ /\\ \\ /\\ / /| | |/ / |   personal wiki   ~\n     todo list       | | (_| \\__ \\   \u003c  \\ V  V / | |   \u003c| |      for vim      ~\n                     |_|\\__,_|___/_|\\_\\  \\_/\\_/  |_|_|\\_\\_|                   ~\n\n### Installation\n\n#### Make sure you satisfy the requirements\n\n* Vim 7.4 or newer, with +python or +python3 (NeoVim is also supported)\n* [Vimwiki](https://github.com/vimwiki/vimwiki/tree/dev) (the dev branch)\n\n        git clone https://github.com/vimwiki/vimwiki ~/.vim/bundle/ --branch dev\n\n* [Taskwarrior](http://taskwarrior.org) (version 2.4.0 or newer),\ninstall either from [sources](http://taskwarrior.org/download/)\nor using your [package manager](http://taskwarrior.org/download/#dist)\n\n        sudo dnf install task\n\n* [tasklib](https://github.com/GothenburgBitFactory/tasklib/) (version 2.4.3 or newer),\nPython library for Taskwarrior.\n\n        sudo pip3 install tasklib\n\n* **For neovim users:** Note that `pynvim` is a required python 3 provider in case you are using neovim\n\n        sudo pip3 install pynvim\n\n#### Python2 support\n\nTaskwiki is slowly deprecating Python 2 support. Future features are no longer\ndeveloped with Python2 compatibility in mind.\n\n#### Install taskwiki\n\nUsing pathogen (or similar vim plugin manager), the taskwiki install is\nas simple as:\n\n    git clone https://github.com/tools-life/taskwiki ~/.vim/bundle/taskwiki\n\nHowever, make sure your box satisfies the requirements stated above.\n\nTo access documentation, run :helptags taskwiki and then :help taskwiki.\n\n#### Optional enhancements\n\nThe following optional plugins enhance and integrate with TaskWiki.\nAt very least,I'd recommend the AnsiEsc plugin - Taskwarrior\ncharts are much more fun when they're colorful!\n\n* [vim-plugin-AnsiEsc](https://github.com/powerman/vim-plugin-AnsiEsc)\nadds color support in charts.\n\n        git clone https://github.com/powerman/vim-plugin-AnsiEsc ~/.vim/bundle/\n\n* [tagbar](https://github.com/majutsushi/tagbar)\nprovides taskwiki file navigation.\n\n        git clone https://github.com/majutsushi/tagbar ~/.vim/bundle/\n\n* [vim-taskwarrior](https://github.com/farseer90718/vim-taskwarrior)\nenables grid view.\n\n        git clone https://github.com/farseer90718/vim-taskwarrior ~/.vim/bundle/\n\n### How it works\n\nTaskwiki enhances simple vimwiki task lists by storing the task metadata in\nTaskwarrior. Taskwarrior uses plaintext data files as a back end, and taskwiki\nuses Taskwarrior as a back end. This allows taskwiki to leverage its powerful\nfeatures, such as filtering, recurrent tasks, user defined attributes or hooks.\n\n*Note:* Taskwiki only handles check lists that use the asterisk `*`. All other\nlists, i.e. those written with a hyphen `-` or a pound sign `#` as well as\nordered lists, are left alone. This allows you to define plain lists and even\nvimwiki check lists that are unrelated to Taskwarrior.\n\n### Features\n\n#### Individual tasks\n\n    * [ ] Install Taskwiki\n\nSuch tasks get synced to TaskWarrior when the file is saved. Additional\nmetadata, as project, tags, priority, can be stored with this task.\n\nSome of that metadata gets visually represented in vim, and is updated\nif the representation changes in vim.\n\n    * [ ] Install Taskwiki !!! (2015-08-23 19:00)\n\n#### Task lists\n\nTasks can be grouped - simply written in one block. This has the advantage\nof any child tasks being marked as dependencies of the parent tasks.\n\n    * [ ] Get married\n        * [X] Find a girlfriend\n        * [ ] Buy a ring\n        * [ ] Propose\n\n#### Viewports\n\nViewport is a header with a task query (filter) embedded, generating\nthe corresponding task list. These tasks can be modified and changes\nwill be synced back to task data.  A simple viewport can look as follows:\n\n    == Home tasks | project:Home ==\n    \nOr if you are using markdown syntax it will be\n\n    ## Home tasks | project:Home\n\nThe filter query will be automatically concealed when leaving insert mode.\n\nUpon saving, this will generate the list of matching tasks, in a tree-like\nfashion (respecting dependencies).\n\n    == Home tasks | project:Home ==\n    * [ ] Feed the dog (2015-08-08)\n    * [ ] Tidy up the house !!\n      * [ ] Wash the dishes\n      * [ ] Declare war on the cobwebs\n\nTasks added (written) to the task list under the viewport inherit the defaults\nfrom its filter.\n\n    == Home tasks | project:Home ==\n    * [ ] Feed the dog\n    * [ ] Tidy up the house !!\n      * [ ] Wash the dishes\n      * [ ] Declare war on the cobwebs\n    * [ ] Call the landlord about rent payment (2015-08-23)\n          ^ the task above will have project:Home set automatically\n\nFor some more complex filters, defaults cannot be automatically derived.\nIn such case, you can specify the defaults explicitly:\n\n    == Urgent tasks | +OVERDUE or +urgent | +urgent ==\n                                             ^ defaults definition\n\nViewports can be inspected by hitting [CR] with cursor above them.\n\n#### Preset headers\n\nA preset header has a similar syntax to a viewport:\n\n    == Home tasks || project:Home ==\n\nIn contrast to viewports it does not generate a list of associated tasks.\nInstead it sets a filter for all viewports and default attributes for all new\ntasks in the corresponding section.\n\nLike with viewports for complex filters the default attributes can be given\nmanually.\n\n    == Home tasks || project:house or project:garden || project:house ==\n\nMultiple levels of preset headers are chained. So you can do this:\n\n    == Taskwiki development || project:Taskwiki ==\n    * Non-task notes\n    === Bugs || +bugs ===\n    * [ ] Bug #42\n    === Features || +features ===\n    * [ ] Some Feature\n\nHere both tasks are assigned the Taskwiki project, as well the respective tag.\n\n#### Report splits\n\nTaskwiki can provide additional information reports on a task list (selected,\nor part of a viewport) and on individual tasks as well. These reports are shown\nin dynamic temporary splits.\n\n    * [ ] Tidy up the house !! (2015-08-23)\n\nFor example, hitting [CR] on the above task runs :TaskWikiInfo and displays:\n\n    Name          Value\n    ------------- ---------------------------------------------------------\n    ID            6\n    Description   Tidy up the house\n                    2015-08-22 21:29:35 Tip: Use roomba for vacuum-cleaning\n    Status        Pending\n    Project       Home\n    Entered       2015-08-22 21:27:26 (2 minutes)\n    Due           2015-08-23 00:00:00\n    Last modified 2015-08-22 21:30:21 (1 second)\n    Virtual tags  ANNOTATED MONTH PENDING READY UNBLOCKED YEAR\n    UUID          448c2fa9-6a06-454e-a2bc-b0c8ae91994f\n    Urgency       9.895\n    Priority      H\n\n    Date                Modification\n    ------------------- ------------------------------------------------------------\n    2015-08-14 21:29:35 Annotation of 'Tip: Use roomba for vacuum-cleaning' added.\n    2015-08-14 21:30:11 Due set to '2015-08-23 00:00:00'.\n\nRunning the :TaskWikiSummary can produce side-split like this:\n\n    Project            Remaining Avg age  Complete 0%                        100%\n    ------------------ --------- -------- -------- ------------------------------\n    Work                      18  4 weeks      74% ======================\n      Designs\n        Feature X              3  4 weeks      89% ==========================\n        Feature Y              7  2 weeks      47% =========\n      Tickets                  5  3 weeks      79% ======================\n      Blog                     1 4 months      50% ===============\n\n\nThere are many more reports (burndown, calendar, history, projects, stats,\nsummary, tags,..), but for the sake of brevity, they will not be described here.\nThey work in a similar fashion.\n\n\n#### Task modification commands\n\nTaskwiki provides commands for the all the traditional operation on tasks, such as\nstarting, stopping, completing, deletion, annotation, generic modification, etc.\n\n    * [ ] Tidy up the house !! (2015-08-23)\n\nSay we want to postpone this task to tomorrow. This can be achieved by hitting\n[Leader]tm (:TaskWikiMod) a prompt will show up, where we enter our desired\nmodification:\n\n    Enter modifications: due:tomorrow\n\nTask is instantly updated:\n\n    * [ ] Tidy up the house !! (2015-08-24)\n\nTask modification commands can be performed on a task currently below the\ncursor, or on a visually selected group of tasks.\n\n\n#### Advanced\n\n- Viewport flags: Custom data sources / sort orders can be defined for\nindividual viewports.\n\n- Grid view: If vim-taskwarrior is available, it can be used to display\na grid view of available tasks.\n\n- Tagbar: Can be shown to display a overview of a Taskwiki file\n\n- Interactive splits: Assign project/tags by picking a option from a split\nthat lists all the already used projects/tags.\n\n\n### Credits\n\nCreated by: Tomas Babej.\n\nDesign suggestions contributed by: David J Patrick.\n\nInspired by: [vimwiki-tasks plugin](https://github.com/teranex/vimwiki-tasks).\n\nTaskwiki wouldn't be possible without all the work and support from the\nTaskwarrior community. Come hang out at #taskwarrior on Freenode.\n\n### Contributing\n\nCode and issue tracker is hosted at: https://github.com/tools-life/taskwiki\n\nFeel free to submit pull requests and/or file issues for bugs and suggestions.\n\n#### Tests\n\nTaskwiki comes with preconfigured docker-based test setup. To run the tests,\nsimply issue:\n\n    PYTEST_FLAGS=\"-n8\" make test\n\nTo run a single test and show vim errors:\n\n    PYTEST_FLAGS=\"-s -k TestChooseProject\" make test\n\nYou may also build a docker image with different versions of some dependencies:\n\n    docker-compose build --build-arg TASK_VERSION=2.6.0 tests\n\nTo run the included tests directly you will require\n\n* [test.py](http://pytest.org)\n* [gvim](http://vim.org)\n* [vimrunner-python](https://github.com/liskin/vimrunner-python) (with the included default_vimrc)\n\nNote also, that the tests depend on language specific messages. So you might\nneed to install and enable either the `en_US` or `en_GB` locale. For example:\n\n    LANG=en_US python -m pytest\n\nFinally you might want to have a look at [the CI configuration](.github/workflows/tests.yaml)\nand consider using a virtual machine or [Xvfb](https://www.x.org/releases/X11R7.6/doc/man/man1/Xvfb.1.xhtml).\n\n#### Known issues\n\nWhen `tzlocal` library can't detect your local timezone, it has to be set [explicitly](https://github.com/tools-life/taskwiki/issues/110) using the environment variable `TZ`. For example, before launching vim:\n\n    export TZ=\"Europe/Prague\"\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftools-life%2Ftaskwiki","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftools-life%2Ftaskwiki","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftools-life%2Ftaskwiki/lists"}