A vim-style Taskwarrior TUI built with Textual.
Project description
hamtask
hamtask is a vim-style Taskwarrior TUI built with Python and Textual.
Goals
- List-first, keyboard-only interface.
- Use Taskwarrior's native filters and raw command arguments.
- Read
report.next.filter,report.next.columns,report.next.labels, andreport.next.sortfrom~/.taskrcor~/.config/task/taskrc. - Mutate tasks by invoking the
taskcommand, never by editing Taskwarrior data files directly.
Requirements
- Python 3.11+
- Taskwarrior's
taskcommand must be installed and configured
Install from PyPI
After hamtask is published to PyPI, users can install it as a uv tool:
uv tool install hamtask
Then run:
hamtask
Update an installed PyPI version with:
uv tool upgrade hamtask
Run during development
uv run hamtask
Local installation
Install the current checkout as a uv tool:
uv tool install .
Then run:
hamtask
If your shell cannot find hamtask, run:
uv tool update-shell
Then restart your terminal or reload your shell config.
Update local installation
After changing the local source code, reinstall with:
uv tool install . --force
Uninstall
uv tool uninstall hamtask
Publish to PyPI
Before publishing, verify the project:
uv run ruff check .
uv run pytest
uv build
This creates distribution files in dist/.
For a first test release, publish to TestPyPI:
uv publish --publish-url https://test.pypi.org/legacy/ --token <test-pypi-token>
Install from TestPyPI with PyPI as the fallback index for dependencies:
uv tool install \
--index-url https://test.pypi.org/simple/ \
--extra-index-url https://pypi.org/simple \
hamtask
Publish to PyPI:
uv publish --token <pypi-token>
For later releases:
- Bump
versioninpyproject.toml. - Run checks and build again.
- Publish with
uv publish --token <pypi-token>.
Key bindings
j/k: move down/upg: go to topG: go to bottomr: refreshq: quitenter: toggle bottom task details/: apply Taskwarrior filter:: command modea:task add ...m:task <uuid> modify ...e:task <uuid> editA:task <uuid> annotate ...d:task <uuid> doneu:task undox: delete with confirmation?: show all shortcuts
Command mode
Supported commands:
:q
:quit
:r
:refresh
:f <filter>
:filter <filter>
:add <raw task args>
:mod <raw task args>
:modify <raw task args>
:done
:undo
:delete
:annotate <text>
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hamtask-0.1.0.tar.gz.
File metadata
- Download URL: hamtask-0.1.0.tar.gz
- Upload date:
- Size: 26.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d7782c153c47bbc7aa081bb832f728cc3c0594a19c1b9a0cf34cb86f4d49eb0e
|
|
| MD5 |
95d99400f0e48754e8ead9d22e6fcff3
|
|
| BLAKE2b-256 |
8f88c007e392f99f0de9cafac7483b2206d5530d45aa8806e6dff756c08910e1
|
File details
Details for the file hamtask-0.1.0-py3-none-any.whl.
File metadata
- Download URL: hamtask-0.1.0-py3-none-any.whl
- Upload date:
- Size: 10.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.15 {"installer":{"name":"uv","version":"0.11.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6e2878639ab09977859c38bde1a01d696e5f7496c4b0c2db69cf1061f762ec9e
|
|
| MD5 |
5e8e76e96094bdd43ca7655865ff4e8c
|
|
| BLAKE2b-256 |
c95bda8a85520067bbe690c0e2f638c0c43bd5569ab8802123ba1231ea39bd58
|