{ "info": { "author": "Micha\u0142 G\u00f3ral", "author_email": "dev@mgoral.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Environment :: Console", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: GNU General Public License v3 or later (GPLv3+)", "Natural Language :: English", "Operating System :: POSIX", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: 3 :: Only", "Topic :: Utilities" ], "description": "twc\n===\n\n**TWC - TaskWarrior Controller** (previously TaskWarrior Curses) is interactive\nterminal frontend for task and TODO manager - TaskWarrior.\n\n.. image:: https://gitlab.com/mgoral/twc/raw/master/docs/img/screenshot.png\n :align: center\n\nFor full documentation please refer to the `User Manual\n`_.\n\nFeatures\n~~~~~~~~\n\n* agendas - display several filters on a single screen simultaneously\n (influenced by `org-mode `_)\n* create, modify, delete, annotate tasks\n* bulk edits: select arbitrary tasks and modify them all at the same time\n* autocomplete and tab-complete writing task descriptions, annotations, tags\n etc.\n* styling and task formatting (with HTML-like markup)\n* tasks and sub-tasks grouping (influenced by\n `taskwiki `_)\n* synchronize tasks with task server\n* status line showing arbitrary informations\n* configurable key bindings\n* search and incremental search of tasks - search can be case-sensitive,\n case-insensitive or smart-case (case sensitivite only when there are upper\n case characters in searched term)\n\nIntroduction\n~~~~~~~~~~~~\n\nTWC works with a concept of \"agendas\" influenced and borrowed from the mighty\norg-mode. Agenda is basically a view of several TaskWarrior filters (called\nblocks) displayed on a single screen simultaneously. You can jump between\nblocks and single tasks.\n\nTo add agenda, first create a configuration file inside\n``~/.config/twc/config.py``. It is a regular Python file with exposed variable\n``c`` which references a configuration object. You can add new blocks like that:\n\n.. code:: python\n\n c.add_block(\n agenda='My Agenda',\n title='Next Tasks',\n filter='status:pending',\n sort='priority+,urgency-')\n\n c.add_block(\n agenda='My Agenda',\n title='Projects',\n filter='-WAITING and (+BLOCKING or +BLOCKED) and -INSTANCE',\n sort='project-,priority-,order+,urgency-',\n format='* {description}{tags}')\n\nStyle and colors\n~~~~~~~~~~~~~~~~\n\nTWC can be styled in any way you want. To change its colors use `c.set_style()`:\n\n.. code:: python\n\n c.set_style('highlight', 'bg:ansiblue bold')\n c.set_style('error', 'fg:white bg:red')\n\nStyle examples:\n\n- ``fg:white`` (white foreground, named color)\n- ``bg:#000000`` (black background, hexadecimal notation)\n- ``bold italic underline blink reverse hidden`` (supported style flags)\n\nAny style name can be used in task formatting. Some interface elements however\nuse specific style names.\n\nTask Format\n~~~~~~~~~~~\n\nBlock's format (``format``) is a mix of `Python's string format\n`_ and HTML-like\nmarkup.\n\nYou can use any TaskWarrior's attribute name as format's placeholder and it will\nbe displayed if present.\n\n.. code:: html\n\n right=\"] \">{id}{description}\n\nSome additional markup can be added to the tasks. The following tags are\navailable:\n\n* ``text``: surrounds text with *left* and *right*.\n* ``text``: if there is any text inside a tag, it will be\n replaced with *value*. It's particularily useful for indicating that some\n task's property is present, without displaying it (like long list of\n annotations):\n ``{annotations}``\n\nKey bindings\n~~~~~~~~~~~~\n\nBy default you can navigate with arrows or vim-style ``j`` and ``k``. Exit TWC\nwith ``q``.\n\nYou can bind and unbind keys with ``c.bind(key, command)`` and\n``c.unbind(key)``. Refer to `User Manual `_ for\na list of commands and other default key bindings.\n\nStatus line\n~~~~~~~~~~~\n\nBottom status line can display arbitrary informations and is configurable by\ntwo variables: ``statusleft`` and ``statusright``. They describe format similar\nto the one described in `Task Format`_ The main difference is that task\nattributes are referenced by ``{task.}`` placeholder and that there\nadditional placeholders available.\n\n.. code:: python\n\n c.set('statusleft', '{COMMAND} {task.id}')\n c.set('statusright', '{task.annotations}')\n\nStatus line placeholders also include: ``taskrc``, ``command``, ``COMMAND``, \n``agenda.pos``, ``agenda.size``, ``agenda.ppos``.\n\nInstallation\n~~~~~~~~~~~~\n\nFirst, make sure that TaskWarrior is installed on your system. TaskWarrior is\npackaged for most of Linux distributions. Please refer to TaskWarrior's\n`documentation `_ for details.\n\nTWC is distributed via `pypi `_. You can\ninstall it with pip:\n\n.. code::\n\n $ pip3 install --user twc\n\nor with pip wrapper like `pipsi `_:\n\n.. code::\n\n $ pipsi install --python python3 twc\n\nTWC reads your ``taskrc``. It'll use the default one, which is usually located\nin ``~/.taskrc``, but you can change it with ``-t`` switch:\n\n.. code::\n\n $ twc -t ~/dotfiles/my_taskrc\n\nTermux\n~~~~~~\n\nTWC works on `Termux `_, although there's currently a `bug\n`_ in tzlocal - a library\nindirectly used by TWC to get local timezone information.\n\nBefore running TWC on Termux you have to export the following environment\nvariable:\n\n.. code:: shell\n\n export TZ=$(getprop persist.sys.timezone)\n\nTermux emulates scroll events as key presses. You can bind them for easier\nnavigation:\n\n.. code:: python\n\n c.bind('right', 'next-agenda')\n c.bind('left', 'prev-agenda')\n\nLicense\n~~~~~~~\n\nTWC was created by Micha\u0142 G\u00f3ral.\n\nTWC is free software, published under the terms of GNU GPL3 or any later\nversion. See LICENSE file for details.\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/mgoral/twc", "keywords": "", "license": "GPLv3+", "maintainer": "", "maintainer_email": "", "name": "twc", "package_url": "https://pypi.org/project/twc/", "platform": "linux", "project_url": "https://pypi.org/project/twc/", "project_urls": { "Homepage": "https://gitlab.com/mgoral/twc" }, "release_url": "https://pypi.org/project/twc/0.7.0/", "requires_dist": [ "prompt-toolkit (==2.0.9)", "tasklib (==1.1.0)", "attrs (==19.1.0)", "mgcomm (>=0.2.0)" ], "requires_python": ">=3.5,<3.8", "summary": "TaskWarrior's interactive terminal frontend", "version": "0.7.0" }, "last_serial": 5963944, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "762d9702f1b6f69e35f87ac543042bed", "sha256": "81e398616fe1792b169734e7efba9dae87663ee09ab01464137efb8ab085c098" }, "downloads": -1, "filename": "twc-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "762d9702f1b6f69e35f87ac543042bed", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 40764, "upload_time": "2019-05-05T22:02:48", "url": "https://files.pythonhosted.org/packages/02/03/728ab6a6d2e457539c3343343700a04f4ff85db86e055b98f2ec0d3e3521/twc-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "088a7a71c45fe5b6ac0ec51b83c69af3", "sha256": "f08984c31ddf57775255ec3cb7f0e117fe9edf4560f063edee98ba4498d51d83" }, "downloads": -1, "filename": "twc-0.1.0.tar.gz", "has_sig": false, "md5_digest": "088a7a71c45fe5b6ac0ec51b83c69af3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 79139, "upload_time": "2019-05-05T22:02:51", "url": "https://files.pythonhosted.org/packages/bf/e3/a27d70a141578962156eb9af9a15bf69ca9c32312059fa1c7ce17dc9a554/twc-0.1.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4607a5c0f5cf199381e0cd4e5bf753d7", "sha256": "18c72d83297995deaef77ae816a2e44d2af492ef4dfbfcfe89740226897ded8d" }, "downloads": -1, "filename": "twc-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4607a5c0f5cf199381e0cd4e5bf753d7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45417, "upload_time": "2019-05-09T06:33:02", "url": "https://files.pythonhosted.org/packages/23/15/3d0a9da951297e499576ac6b4fd3d58db421b9b3502c39da35b0e3b4a95d/twc-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e45a96841b3f2ba97686d98a4a25f89e", "sha256": "e8282247b4fe0bbdd77eafc3d358ea975cff57e382ee123a70c1d9974ae57032" }, "downloads": -1, "filename": "twc-0.2.1.tar.gz", "has_sig": false, "md5_digest": "e45a96841b3f2ba97686d98a4a25f89e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 92315, "upload_time": "2019-05-09T06:33:04", "url": "https://files.pythonhosted.org/packages/df/3b/c82553044f2bc4fb1ca37b40ee1487efe2172b616efd4f7e91b2d940be52/twc-0.2.1.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "fdc357104155d52f3fe1bccd1b9d2032", "sha256": "8625da4eaf49d9914d3c69414ca986c5e8389c4faf502ab687bbb1a3dfabbb29" }, "downloads": -1, "filename": "twc-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "fdc357104155d52f3fe1bccd1b9d2032", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 45798, "upload_time": "2019-05-12T20:49:47", "url": "https://files.pythonhosted.org/packages/03/0d/8c73fe56a112e213d8f2def42e813a404e49a563d4adcbe24016094cc3e8/twc-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e36527e704ce2370fc2758956074f7aa", "sha256": "9ae846f13fd471f9c65eb2a3681378e96a6e6930503d7083345c99c21ae92ab7" }, "downloads": -1, "filename": "twc-0.3.1.tar.gz", "has_sig": false, "md5_digest": "e36527e704ce2370fc2758956074f7aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 93558, "upload_time": "2019-05-12T20:49:49", "url": "https://files.pythonhosted.org/packages/3e/50/76b6dc04de039fa54cb534525de71c0365225f0a1094cee8727e05146165/twc-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "61bd8a97ecf0cd18c7fa78c7b89a0c9c", "sha256": "f942a04d61637fc4bab3def2b01350f8cd48229101844cb479a09e17db2a5c9d" }, "downloads": -1, "filename": "twc-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "61bd8a97ecf0cd18c7fa78c7b89a0c9c", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 44927, "upload_time": "2019-05-20T22:05:45", "url": "https://files.pythonhosted.org/packages/08/3c/4cc53005e2a42395aa5ec669688093f9837dc90effa3046b009b9329c47d/twc-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e82ab0f2e32feb26c085a743010767d4", "sha256": "e4e099b117f4c75bf96398cc1c99dead5e027b55d38a1ab99fce5739f945efae" }, "downloads": -1, "filename": "twc-0.4.0.tar.gz", "has_sig": false, "md5_digest": "e82ab0f2e32feb26c085a743010767d4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 99530, "upload_time": "2019-05-20T22:05:47", "url": "https://files.pythonhosted.org/packages/17/2a/d11865198b078e1c90d8bd2885144eb4eb9c8ca3bf7252b269983c371276/twc-0.4.0.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "aaaacfe3e4a7487073e4eb47e60f60d6", "sha256": "d285c72652995cbdec1a22f119c3e344399d3508253a903c9e237113ac97a2b4" }, "downloads": -1, "filename": "twc-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "aaaacfe3e4a7487073e4eb47e60f60d6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<3.8", "size": 45635, "upload_time": "2019-05-30T06:07:53", "url": "https://files.pythonhosted.org/packages/b2/ba/4afab0bda264420d1d947a52b2908c554d4f934ccabf253b87ed8b7fa765/twc-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "be6f1daef1f22d8efb25f664ee6892b6", "sha256": "76a9e5e7b0bf21360c1031c6b66a8ccc97e3f0a68500f8a3fa5fcca14e9792e9" }, "downloads": -1, "filename": "twc-0.5.0.tar.gz", "has_sig": false, "md5_digest": "be6f1daef1f22d8efb25f664ee6892b6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<3.8", "size": 138324, "upload_time": "2019-05-30T06:07:55", "url": "https://files.pythonhosted.org/packages/85/f8/61ab095da6346747c51857a6142d64921cc3a70b1e8e59d192aa400a14cd/twc-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "faede624180b4d6931d1b6de781c88af", "sha256": "5165388ea61f56808073bacd4963dfb9d24c8276e2a61f5dacb9084fafb98fac" }, "downloads": -1, "filename": "twc-0.6.0-py3-none-any.whl", "has_sig": false, "md5_digest": "faede624180b4d6931d1b6de781c88af", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<3.8", "size": 54604, "upload_time": "2019-07-15T07:58:06", "url": "https://files.pythonhosted.org/packages/7f/ee/b8d573098a8796f1d9c53c5e78bc96d912b62222ffa4515466511613b755/twc-0.6.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e466a8d519dae80ba155e84657607d02", "sha256": "2a914963df12f3312f99f82c0367a5619f08f5f176d6f776eb271b52516ed232" }, "downloads": -1, "filename": "twc-0.6.0.tar.gz", "has_sig": false, "md5_digest": "e466a8d519dae80ba155e84657607d02", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<3.8", "size": 111742, "upload_time": "2019-07-15T07:58:08", "url": "https://files.pythonhosted.org/packages/d2/53/d9704480e6df51e72a1676552138353775a1c254edeaf3eec6874fb1633e/twc-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "511b0e76713d189c7b0478e85e5bfc09", "sha256": "3b0c51013c27ec662791c605a4e5e07c4416988b17711c2d251f43257af9fd53" }, "downloads": -1, "filename": "twc-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "511b0e76713d189c7b0478e85e5bfc09", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<3.8", "size": 56003, "upload_time": "2019-10-12T11:24:33", "url": "https://files.pythonhosted.org/packages/a3/36/fc6fcea75b0f3abafb91e28799b9d1e5f447579d5128779b1c7ff2ec5d7f/twc-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fb664eec0549c4334ebb90e8419eca7", "sha256": "6c95d757141e73fbc93be96ce4a472703fce2c069d8e410de71aaed2beed6bbf" }, "downloads": -1, "filename": "twc-0.7.0.tar.gz", "has_sig": false, "md5_digest": "0fb664eec0549c4334ebb90e8419eca7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<3.8", "size": 112601, "upload_time": "2019-10-12T11:24:35", "url": "https://files.pythonhosted.org/packages/4a/09/20d751bc7badc0db30cd66376233d074cae897af976d30c0c755af24a733/twc-0.7.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "511b0e76713d189c7b0478e85e5bfc09", "sha256": "3b0c51013c27ec662791c605a4e5e07c4416988b17711c2d251f43257af9fd53" }, "downloads": -1, "filename": "twc-0.7.0-py3-none-any.whl", "has_sig": false, "md5_digest": "511b0e76713d189c7b0478e85e5bfc09", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5,<3.8", "size": 56003, "upload_time": "2019-10-12T11:24:33", "url": "https://files.pythonhosted.org/packages/a3/36/fc6fcea75b0f3abafb91e28799b9d1e5f447579d5128779b1c7ff2ec5d7f/twc-0.7.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0fb664eec0549c4334ebb90e8419eca7", "sha256": "6c95d757141e73fbc93be96ce4a472703fce2c069d8e410de71aaed2beed6bbf" }, "downloads": -1, "filename": "twc-0.7.0.tar.gz", "has_sig": false, "md5_digest": "0fb664eec0549c4334ebb90e8419eca7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5,<3.8", "size": 112601, "upload_time": "2019-10-12T11:24:35", "url": "https://files.pythonhosted.org/packages/4a/09/20d751bc7badc0db30cd66376233d074cae897af976d30c0c755af24a733/twc-0.7.0.tar.gz" } ] }