All Projects → tools-life → Taskwiki

tools-life / Taskwiki

Licence: other
Proper project management with Taskwarrior in vim.

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Taskwiki

Vlc Pause Click Plugin
Plugin for VLC that pauses/plays video on mouse click
Stars: ✭ 467 (-11.55%)
Mutual labels:  plugin
Things.sh
Simple read-only comand-line interface to your Things 3 database
Stars: ✭ 492 (-6.82%)
Mutual labels:  plugin
Typescript Plugin Css Modules
A TypeScript language service plugin providing support for CSS Modules.
Stars: ✭ 520 (-1.52%)
Mutual labels:  plugin
Ts Graphql Plugin
TypeScript Language Service Plugin for GraphQL developers
Stars: ✭ 479 (-9.28%)
Mutual labels:  plugin
Users
Users Plugin for CakePHP
Stars: ✭ 488 (-7.58%)
Mutual labels:  plugin
Gimp Plugin Bimp
BIMP. Batch Image Manipulation Plugin for GIMP.
Stars: ✭ 500 (-5.3%)
Mutual labels:  plugin
Next Compose Plugins
💡next-compose-plugins provides a cleaner API for enabling and configuring plugins for next.js
Stars: ✭ 465 (-11.93%)
Mutual labels:  plugin
Web3modal
A single Web3 / Ethereum provider solution for all Wallets
Stars: ✭ 515 (-2.46%)
Mutual labels:  plugin
Sketch Sf Ui Font Fixer
A Sketch plugin that adjusts the character spacing on text layers using iOS 9's SF UI Text/SF UI Display fonts to what it would be when used in an iOS app.
Stars: ✭ 492 (-6.82%)
Mutual labels:  plugin
Poster Girl L2d 2233
🍬 The live2d poster girl plugin of 22&33 for WordPress
Stars: ✭ 517 (-2.08%)
Mutual labels:  plugin
Fslayui
基于layui的前端快速开发框架,支持数据表格增删改查操作,提供通用的组件,通过配置html实现数据请求,减少前端js重复开发的工作。目前支持单数据表格、多数据表格、tab数据表格、树+数据表格、联动数据表格、layeidt编辑器、下拉框联动等。
Stars: ✭ 483 (-8.52%)
Mutual labels:  plugin
V2ray Poseidon
An Enhanced V2Ray(based on v2ray-core) for VNetPanel, SSRPanel, V2board and SSPanel-v3-Uim to sync users from database to v2ray, to log traffics/system info
Stars: ✭ 482 (-8.71%)
Mutual labels:  plugin
Vimoutliner
Work fast, think well.
Stars: ✭ 507 (-3.98%)
Mutual labels:  plugin
Offline Plugin
Offline plugin (ServiceWorker, AppCache) for webpack (https://webpack.js.org/)
Stars: ✭ 4,444 (+741.67%)
Mutual labels:  plugin
Terraform Provisioner Ansible
Ansible with Terraform 0.13.x
Stars: ✭ 520 (-1.52%)
Mutual labels:  plugin
Awesome Hexo
A curated list of awesome things related to Hexo
Stars: ✭ 466 (-11.74%)
Mutual labels:  plugin
Painterro
Painterro - JavaScript painting plugin
Stars: ✭ 496 (-6.06%)
Mutual labels:  plugin
Atom Plugins
some awesome atom-plugins !
Stars: ✭ 526 (-0.38%)
Mutual labels:  plugin
Swiftmockgeneratorforxcode
An Xcode extension (plugin) to generate Swift test doubles automatically.
Stars: ✭ 522 (-1.14%)
Mutual labels:  plugin
Elastalert Kibana Plugin
ElastAlert Kibana Plugin
Stars: ✭ 515 (-2.46%)
Mutual labels:  plugin

Taskwiki

Proper project management in vim. Standing on the shoulders of vimwiki and Taskwarrior

GitHub Actions build status Coverage Status Code Health Chat with developers

     a         |_   _|_ _ ___| | _\ \      / (_) | _(_)         a         ~
command-line     | |/ _` / __| |/ /\ \ /\ / /| | |/ / |   personal wiki   ~
 todo list       | | (_| \__ \   <  \ V  V / | |   <| |      for vim      ~
                 |_|\__,_|___/_|\_\  \_/\_/  |_|_|\_\_|                   ~

Installation

Make sure you satisfy the requirements

  • Vim 7.4 or newer, with +python or +python3 (NeoVim is also supported)

  • Vimwiki (the dev branch)

      git clone https://github.com/vimwiki/vimwiki ~/.vim/bundle/ --branch dev
    
  • Taskwarrior (version 2.4.0 or newer), install either from sources or using your package manager

      sudo dnf install task
    
  • tasklib (the develop branch), Python library for Taskwarrior.

      sudo pip3 install --upgrade -r requirements.txt
    

Python2 support

Taskwiki is slowly deprecating Python 2 support. Future features are no longer developed with Python2 compatibility in mind.

Install taskwiki

Using pathogen (or similar vim plugin manager), the taskwiki install is as simple as:

git clone https://github.com/tools-life/taskwiki ~/.vim/bundle/taskwiki

However, make sure your box satisfies the requirements stated above.

To access documentation, run :helptags taskwiki and then :help taskwiki.

Optional enhancements

The following optional plugins enhance and integrate with TaskWiki. At very least,I'd recommend the AnsiEsc plugin - Taskwarrior charts are much more fun when they're colorful!

  • vim-plugin-AnsiEsc adds color support in charts.

      git clone https://github.com/powerman/vim-plugin-AnsiEsc ~/.vim/bundle/
    
  • tagbar provides taskwiki file navigation.

      git clone https://github.com/majutsushi/tagbar ~/.vim/bundle/
    
  • vim-taskwarrior enables grid view.

      git clone https://github.com/farseer90718/vim-taskwarrior ~/.vim/bundle/
    

How it works

Taskwiki enhances simple vimwiki task lists by storing the task metadata in Taskwarrior. Taskwarrior uses plaintext data files as a back end, and taskwiki uses Taskwarrior as a back end. This allows taskwiki to leverage its powerful features, such as filtering, recurrent tasks, user defined attributes or hooks.

Note: Taskwiki only handles check lists that use the asterisk *. All other lists, i.e. those written with a hyphen - or a pound sign # as well as ordered lists, are left alone. This allows you to define plain lists and even vimwiki check lists that are unrelated to Taskwarrior.

Features

Individual tasks

* [ ] Install Taskwiki

Such tasks get synced to TaskWarrior when the file is saved. Additional metadata, as project, tags, priority, can be stored with this task.

Some of that metadata gets visually represented in vim, and is updated if the representation changes in vim.

* [ ] Install Taskwiki !!! (2015-08-23 19:00)

Task lists

Tasks can be grouped - simply written in one block. This has the advantage of any child tasks being marked as dependencies of the parent tasks.

* [ ] Get married
    * [X] Find a girlfriend
    * [ ] Buy a ring
    * [ ] Propose

Viewports

Viewport is a header with a task query (filter) embedded, generating the corresponding task list. These tasks can be modified and changes will be synced back to task data. A simple viewport can look as follows:

== Home tasks | project:Home ==

Or if you are using markdown syntax it will be

## Home tasks | project:Home

The filter query will be automatically concealed when leaving insert mode.

Upon saving, this will generate the list of matching tasks, in a tree-like fashion (respecting dependencies).

== Home tasks | project:Home ==
* [ ] Feed the dog (2015-08-08)
* [ ] Tidy up the house !!
  * [ ] Wash the dishes
  * [ ] Declare war on the cobwebs

Tasks added (written) to the task list under the viewport inherit the defaults from its filter.

== Home tasks | project:Home ==
* [ ] Feed the dog
* [ ] Tidy up the house !!
  * [ ] Wash the dishes
  * [ ] Declare war on the cobwebs
* [ ] Call the landlord about rent payment (2015-08-23)
      ^ the task above will have project:Home set automatically

For some more complex filters, defaults cannot be automatically derived. In such case, you can specify the defaults explicitly:

== Urgent tasks | +OVERDUE or +urgent | +urgent ==
                                         ^ defaults definition

Viewports can be inspected by hitting [CR] with cursor above them.

Preset headers

A preset header has a similar syntax to a viewport:

== Home tasks || project:Home ==

In contrast to viewports it does not generate a list of associated tasks. Instead it sets a filter for all viewports and default attributes for all new tasks in the corresponding section.

Like with viewports for complex filters the default attributes can be given manually.

== Home tasks || project:house or project:garden || project:house ==

Multiple levels of preset headers are chained. So you can do this:

== Taskwiki development || project:Taskwiki ==
* Non-task notes
=== Bugs || +bugs ===
* [ ] Bug #42
=== Features || +features ===
* [ ] Some Feature

Here both tasks are assigned the Taskwiki project, as well the respective tag.

Report splits

Taskwiki can provide additional information reports on a task list (selected, or part of a viewport) and on individual tasks as well. These reports are shown in dynamic temporary splits.

* [ ] Tidy up the house !! (2015-08-23)

For example, hitting [CR] on the above task runs :TaskWikiInfo and displays:

Name          Value
------------- ---------------------------------------------------------
ID            6
Description   Tidy up the house
                2015-08-22 21:29:35 Tip: Use roomba for vacuum-cleaning
Status        Pending
Project       Home
Entered       2015-08-22 21:27:26 (2 minutes)
Due           2015-08-23 00:00:00
Last modified 2015-08-22 21:30:21 (1 second)
Virtual tags  ANNOTATED MONTH PENDING READY UNBLOCKED YEAR
UUID          448c2fa9-6a06-454e-a2bc-b0c8ae91994f
Urgency       9.895
Priority      H

Date                Modification
------------------- ------------------------------------------------------------
2015-08-14 21:29:35 Annotation of 'Tip: Use roomba for vacuum-cleaning' added.
2015-08-14 21:30:11 Due set to '2015-08-23 00:00:00'.

Running the :TaskWikiSummary can produce side-split like this:

Project            Remaining Avg age  Complete 0%                        100%
------------------ --------- -------- -------- ------------------------------
Work                      18  4 weeks      74% ======================
  Designs
    Feature X              3  4 weeks      89% ==========================
    Feature Y              7  2 weeks      47% =========
  Tickets                  5  3 weeks      79% ======================
  Blog                     1 4 months      50% ===============

There are many more reports (burndown, calendar, history, projects, stats, summary, tags,..), but for the sake of brevity, they will not be described here. They work in a similar fashion.

Task modification commands

Taskwiki provides commands for the all the traditional operation on tasks, such as starting, stopping, completing, deletion, annotation, generic modification, etc.

* [ ] Tidy up the house !! (2015-08-23)

Say we want to postpone this task to tomorrow. This can be achieved by hitting [Leader]tm (:TaskWikiMod) a prompt will show up, where we enter our desired modification:

Enter modifications: due:tomorrow

Task is instantly updated:

* [ ] Tidy up the house !! (2015-08-24)

Task modification commands can be performed on a task currently below the cursor, or on a visually selected group of tasks.

Advanced

  • Viewport flags: Custom data sources / sort orders can be defined for individual viewports.

  • Grid view: If vim-taskwarrior is available, it can be used to display a grid view of available tasks.

  • Tagbar: Can be shown to display a overview of a Taskwiki file

  • Interactive splits: Assign project/tags by picking a option from a split that lists all the already used projects/tags.

Credits

Created by: Tomas Babej.

Design suggestions contributed by: David J Patrick.

Inspired by: vimwiki-tasks plugin.

Taskwiki wouldn't be possible without all the work and support from the Taskwarrior community. Come hang out at #taskwarrior on Freenode.

Contributing

Code and issue tracker is hosted at: https://github.com/tools-life/taskwiki

Feel free to submit pull requests and/or file issues for bugs and suggestions.

Tests

Taskwiki comes with preconfigured docker-based test setup. To run the tests, simply issue:

PYTEST_FLAGS="-n8" make test

To run a single test and show vim errors:

PYTEST_FLAGS="-s -k TestChooseProject" make test

You may also build a docker image with different versions of some dependencies:

docker-compose build --build-arg TASK_VERSION=2.6.0 tests

To run the included tests directly you will require

Note also, that the tests depend on language specific messages. So you might need to install and enable either the en_US or en_GB locale. For example:

LANG=en_US python -m pytest

Finally you might want to have a look at the CI configuration and consider using a virtual machine or Xvfb.

Known issues

When tzlocal library can't detect your local timezone, it has to be set explicitly using the environment variable TZ. For example, before launching vim:

export TZ="Europe/Prague"
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].