<p align="center">
<img src="https://github.com/Pieli/canny/blob/main/assets/canny_logo_small.png" />
</p>
<p align="center">
<a href="https://github.com/Pieli/canny/actions/workflows/pylint.yml">
<img src="https://github.com/Pieli/canny/actions/workflows/pylint.yml/badge.svg">
</a>
<a href="https://github.com/Pieli/canny/actions/workflows/python-publish.yml">
<img src="https://github.com/Pieli/canny/actions/workflows/python-publish.yml/badge.svg?branch=main">
</a>
</p>
`canny` creates a clickable pane, based on the standard input.
or more precise:
`canny` reads lines from STDIN, allowing you to interactively select a value, which is then returned to STDOUT.
![example_interaction](assets/example_interaction.gif)
* canny enables interactive filters in piped commands
* a unix-philosophy experiment
* brings the mouse to the cli :)
* a fzf inspired tool
<p align="center">
<img width=80% src="https://github.com/Pieli/canny/blob/main/assets/demo.gif" />
</p>
**But, what does it do?**
- Every non-white space becomes a token
- Every token will be possible element for selection
- After a selection, the token will be returned through standard output
## Usage
Here are some examples, after the [installation step](#installation)
This will open the selected file/directory of the current directory in vim:
```sh
vim $(ls -C | canny)
```
Another possible usage is this:
```sh
ls -C | canny | xargs xdg-open
```
This opens the selected file with it's standard application.
For more ways to use `canny` check out the `examples` directory.
### Html Parser
- when run with the `--tags` flag, canny will look for HTML tags (excluding semantics) and makes tag bodies clickable.
- this function allows for a predefinition of clickable elements, in contrast to the default case, where every non-whitespace character is clickable
- if the tags are nested, only the highest level of tags is clickable
- in the case ther are no tags in the text, every word will be tokenized and clickable.
<p align="center">
<img width=70% src="https://github.com/Pieli/canny/blob/main/assets/ice-cream.gif" />
</p>
## Installation
> [!Note]
> only tested / written for linux
You can install `canny` from the PyPI repositories using the following command:
```
pip install canny
```
or check the realease page for a manual installation.
on ubuntu first install ncurses-term:
```
apt install ncurses-term
```
## Issues
> [!Important]
> This tool currently supports python3.10 and upwards
On version with a python version lower than 3.10 the `curses.BUTTON5` constant is not supported.
Please report possible issues [here](https://github.com/Pieli/canny/issues).
## License
This project is licensed under the [GPLv3 License](LICENSE).
---
Made with love by 🦝
Raw data
{
"_id": null,
"home_page": "",
"name": "coating",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": "",
"keywords": "vim,bash,cli,unix,rice,tui,hci,interaction,unix-philosophy,canny",
"author": "",
"author_email": "Pieli <pieli.dev@gmail.com>",
"download_url": "https://files.pythonhosted.org/packages/bb/ee/0ace101877647501422e46ab6fb876bdb64d20ded739be00068f9878f230/coating-0.0.1.tar.gz",
"platform": null,
"description": "<p align=\"center\">\n <img src=\"https://github.com/Pieli/canny/blob/main/assets/canny_logo_small.png\" />\n</p>\n<p align=\"center\">\n <a href=\"https://github.com/Pieli/canny/actions/workflows/pylint.yml\">\n <img src=\"https://github.com/Pieli/canny/actions/workflows/pylint.yml/badge.svg\">\n </a>\n <a href=\"https://github.com/Pieli/canny/actions/workflows/python-publish.yml\">\n <img src=\"https://github.com/Pieli/canny/actions/workflows/python-publish.yml/badge.svg?branch=main\">\n </a>\n</p>\n\n\n`canny` creates a clickable pane, based on the standard input.\n\nor more precise: \n \n`canny` reads lines from STDIN, allowing you to interactively select a value, which is then returned to STDOUT.\n\n![example_interaction](assets/example_interaction.gif)\n\n* canny enables interactive filters in piped commands\n* a unix-philosophy experiment\n* brings the mouse to the cli :)\n* a fzf inspired tool\n<p align=\"center\">\n <img width=80% src=\"https://github.com/Pieli/canny/blob/main/assets/demo.gif\" />\n</p>\n\n\n**But, what does it do?** \n- Every non-white space becomes a token\n- Every token will be possible element for selection\n- After a selection, the token will be returned through standard output\n\n## Usage\nHere are some examples, after the [installation step](#installation) \n\nThis will open the selected file/directory of the current directory in vim:\n```sh\nvim $(ls -C | canny)\n```\n\nAnother possible usage is this:\n```sh\nls -C | canny | xargs xdg-open\n```\nThis opens the selected file with it's standard application.\n\nFor more ways to use `canny` check out the `examples` directory. \n\n### Html Parser\n- when run with the `--tags` flag, canny will look for HTML tags (excluding semantics) and makes tag bodies clickable.\n- this function allows for a predefinition of clickable elements, in contrast to the default case, where every non-whitespace character is clickable\n- if the tags are nested, only the highest level of tags is clickable\n- in the case ther are no tags in the text, every word will be tokenized and clickable.\n\n<p align=\"center\">\n <img width=70% src=\"https://github.com/Pieli/canny/blob/main/assets/ice-cream.gif\" />\n</p>\n\n\n## Installation\n> [!Note]\n> only tested / written for linux\n\nYou can install `canny` from the PyPI repositories using the following command:\n```\npip install canny\n```\nor check the realease page for a manual installation.\n\non ubuntu first install ncurses-term:\n```\napt install ncurses-term\n```\n\n\n## Issues\n\n> [!Important]\n> This tool currently supports python3.10 and upwards\n\nOn version with a python version lower than 3.10 the `curses.BUTTON5` constant is not supported.\n\nPlease report possible issues [here](https://github.com/Pieli/canny/issues). \n\n## License\n\nThis project is licensed under the [GPLv3 License](LICENSE).\n\n---\nMade with love by \ud83e\udd9d\n\n",
"bugtrack_url": null,
"license": "",
"summary": "A filter with an pointer interface \ud83e\udd9d",
"version": "0.0.1",
"project_urls": {
"Bug Tracker": "https://github.com/Pieli/canny/issues",
"Homepage": "https://github.com/Pieli/canny"
},
"split_keywords": [
"vim",
"bash",
"cli",
"unix",
"rice",
"tui",
"hci",
"interaction",
"unix-philosophy",
"canny"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c6a880871eba97360e3c3e16e103cbe6dbea1779792cc07e11292262e26f97e6",
"md5": "8f3bfbd60e7709eac4b1163b30648e5d",
"sha256": "ce471543bff79a18181f2938b7233f799fd0cc48c6f651a2a275c11c9c8569d5"
},
"downloads": -1,
"filename": "coating-0.0.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8f3bfbd60e7709eac4b1163b30648e5d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.8",
"size": 19871,
"upload_time": "2024-01-19T23:19:11",
"upload_time_iso_8601": "2024-01-19T23:19:11.105864Z",
"url": "https://files.pythonhosted.org/packages/c6/a8/80871eba97360e3c3e16e103cbe6dbea1779792cc07e11292262e26f97e6/coating-0.0.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "bbee0ace101877647501422e46ab6fb876bdb64d20ded739be00068f9878f230",
"md5": "9ead609071d3ad1969ca4e19f3f19421",
"sha256": "64e85719e258f82cb7eba26619122e950d71fa727ff5eeea8e4f8fb779cd75ec"
},
"downloads": -1,
"filename": "coating-0.0.1.tar.gz",
"has_sig": false,
"md5_digest": "9ead609071d3ad1969ca4e19f3f19421",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.8",
"size": 20436,
"upload_time": "2024-01-19T23:19:13",
"upload_time_iso_8601": "2024-01-19T23:19:13.212558Z",
"url": "https://files.pythonhosted.org/packages/bb/ee/0ace101877647501422e46ab6fb876bdb64d20ded739be00068f9878f230/coating-0.0.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-19 23:19:13",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "Pieli",
"github_project": "canny",
"github_not_found": true,
"lcname": "coating"
}