├── .editorconfig ├── .gitattributes ├── .github ├── FUNDING.yml └── workflows │ └── lint.yml ├── .gitignore ├── LICENSE ├── README.md ├── awesome-textualize.png ├── code-of-conduct.md └── contributing.md /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_style = space 7 | trim_trailing_whitespace = true 8 | insert_final_newline = true 9 | 10 | # Rules for markdown documents. 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | readme.md merge=union 3 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: [oleksis] 4 | -------------------------------------------------------------------------------- /.github/workflows/lint.yml: -------------------------------------------------------------------------------- 1 | name: Lint Awesome List 2 | on: [push, pull_request] 3 | jobs: 4 | lint: 5 | name: Lint 6 | runs-on: ubuntu-latest 7 | steps: 8 | - uses: actions/checkout@v2 9 | with: 10 | fetch-depth: 0 11 | - run: npx awesome-lint 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .obsidian 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | CC0 1.0 Universal 2 | 3 | Statement of Purpose 4 | 5 | The laws of most jurisdictions throughout the world automatically confer 6 | exclusive Copyright and Related Rights (defined below) upon the creator and 7 | subsequent owner(s) (each and all, an "owner") of an original work of 8 | authorship and/or a database (each, a "Work"). 9 | 10 | Certain owners wish to permanently relinquish those rights to a Work for the 11 | purpose of contributing to a commons of creative, cultural and scientific 12 | works ("Commons") that the public can reliably and without fear of later 13 | claims of infringement build upon, modify, incorporate in other works, reuse 14 | and redistribute as freely as possible in any form whatsoever and for any 15 | purposes, including without limitation commercial purposes. These owners may 16 | contribute to the Commons to promote the ideal of a free culture and the 17 | further production of creative, cultural and scientific works, or to gain 18 | reputation or greater distribution for their Work in part through the use and 19 | efforts of others. 20 | 21 | For these and/or other purposes and motivations, and without any expectation 22 | of additional consideration or compensation, the person associating CC0 with a 23 | Work (the "Affirmer"), to the extent that he or she is an owner of Copyright 24 | and Related Rights in the Work, voluntarily elects to apply CC0 to the Work 25 | and publicly distribute the Work under its terms, with knowledge of his or her 26 | Copyright and Related Rights in the Work and the meaning and intended legal 27 | effect of CC0 on those rights. 28 | 29 | 1. Copyright and Related Rights. A Work made available under CC0 may be 30 | protected by copyright and related or neighboring rights ("Copyright and 31 | Related Rights"). Copyright and Related Rights include, but are not limited 32 | to, the following: 33 | 34 | i. the right to reproduce, adapt, distribute, perform, display, communicate, 35 | and translate a Work; 36 | 37 | ii. moral rights retained by the original author(s) and/or performer(s); 38 | 39 | iii. publicity and privacy rights pertaining to a person's image or likeness 40 | depicted in a Work; 41 | 42 | iv. rights protecting against unfair competition in regards to a Work, 43 | subject to the limitations in paragraph 4(a), below; 44 | 45 | v. rights protecting the extraction, dissemination, use and reuse of data in 46 | a Work; 47 | 48 | vi. database rights (such as those arising under Directive 96/9/EC of the 49 | European Parliament and of the Council of 11 March 1996 on the legal 50 | protection of databases, and under any national implementation thereof, 51 | including any amended or successor version of such directive); and 52 | 53 | vii. other similar, equivalent or corresponding rights throughout the world 54 | based on applicable law or treaty, and any national implementations thereof. 55 | 56 | 2. Waiver. To the greatest extent permitted by, but not in contravention of, 57 | applicable law, Affirmer hereby overtly, fully, permanently, irrevocably and 58 | unconditionally waives, abandons, and surrenders all of Affirmer's Copyright 59 | and Related Rights and associated claims and causes of action, whether now 60 | known or unknown (including existing as well as future claims and causes of 61 | action), in the Work (i) in all territories worldwide, (ii) for the maximum 62 | duration provided by applicable law or treaty (including future time 63 | extensions), (iii) in any current or future medium and for any number of 64 | copies, and (iv) for any purpose whatsoever, including without limitation 65 | commercial, advertising or promotional purposes (the "Waiver"). Affirmer makes 66 | the Waiver for the benefit of each member of the public at large and to the 67 | detriment of Affirmer's heirs and successors, fully intending that such Waiver 68 | shall not be subject to revocation, rescission, cancellation, termination, or 69 | any other legal or equitable action to disrupt the quiet enjoyment of the Work 70 | by the public as contemplated by Affirmer's express Statement of Purpose. 71 | 72 | 3. Public License Fallback. Should any part of the Waiver for any reason be 73 | judged legally invalid or ineffective under applicable law, then the Waiver 74 | shall be preserved to the maximum extent permitted taking into account 75 | Affirmer's express Statement of Purpose. In addition, to the extent the Waiver 76 | is so judged Affirmer hereby grants to each affected person a royalty-free, 77 | non transferable, non sublicensable, non exclusive, irrevocable and 78 | unconditional license to exercise Affirmer's Copyright and Related Rights in 79 | the Work (i) in all territories worldwide, (ii) for the maximum duration 80 | provided by applicable law or treaty (including future time extensions), (iii) 81 | in any current or future medium and for any number of copies, and (iv) for any 82 | purpose whatsoever, including without limitation commercial, advertising or 83 | promotional purposes (the "License"). The License shall be deemed effective as 84 | of the date CC0 was applied by Affirmer to the Work. Should any part of the 85 | License for any reason be judged legally invalid or ineffective under 86 | applicable law, such partial invalidity or ineffectiveness shall not 87 | invalidate the remainder of the License, and in such case Affirmer hereby 88 | affirms that he or she will not (i) exercise any of his or her remaining 89 | Copyright and Related Rights in the Work or (ii) assert any associated claims 90 | and causes of action with respect to the Work, in either case contrary to 91 | Affirmer's express Statement of Purpose. 92 | 93 | 4. Limitations and Disclaimers. 94 | 95 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 96 | surrendered, licensed or otherwise affected by this document. 97 | 98 | b. Affirmer offers the Work as-is and makes no representations or warranties 99 | of any kind concerning the Work, express, implied, statutory or otherwise, 100 | including without limitation warranties of title, merchantability, fitness 101 | for a particular purpose, non infringement, or the absence of latent or 102 | other defects, accuracy, or the present or absence of errors, whether or not 103 | discoverable, all to the greatest extent permissible under applicable law. 104 | 105 | c. Affirmer disclaims responsibility for clearing rights of other persons 106 | that may apply to the Work or any use thereof, including without limitation 107 | any person's Copyright and Related Rights in the Work. Further, Affirmer 108 | disclaims responsibility for obtaining any necessary consents, permissions 109 | or other rights required for any use of the Work. 110 | 111 | d. Affirmer understands and acknowledges that Creative Commons is not a 112 | party to this document and has no duty or obligation with respect to this 113 | CC0 or use of the Work. 114 | 115 | For more information, please see 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 |

3 |
4 | awesome-textualize-projects 5 |
6 |

7 | 8 | # Awesome Textualize Projects 9 | [![Awesome](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/sindresorhus/awesome) [![GitHub Actions status | oleksis/awesome-textualize-projects](https://github.com/oleksis/awesome-textualize-projects/actions/workflows/lint.yml/badge.svg)](https://github.com/oleksis/awesome-textualize-projects/actions/workflows/lint.yml) 10 | 11 | > A curated list of awesome projects related to [Textualize]. 12 | 13 | Textualize is responsible for creating frameworks / projects like: 14 | 15 | - [Textual](https://github.com/Textualize/textual): 16 | a TUI (Text User Interface) framework for Python inspired by modern web development. 17 | - [Rich](https://github.com/Textualize/rich): 18 | a Python library for rich text and beautiful formatting in the terminal. 19 | - [Rich CLI](https://github.com/Textualize/rich-cli): 20 | a command line toolbox for fancy output in the terminal 21 | 22 | ## Contents 23 | 24 | - [Official Resources](#official-resources) 25 | - [Textual](#textual) 26 | - [Rich](#rich) 27 | - [Rich CLI](#rich-cli) 28 | - [Community](#community) 29 | - [Third Party Applications](#third-party-applications) 30 | - [Tutorials](#tutorials) 31 | 32 | ## Official Resources 33 | 34 | - [Official Site][textualize] 35 | - [Official Textualize organization](https://github.com/Textualize) 36 | - [Textualize Blog Announcement](https://www.textualize.io/blog) 37 | 38 | ### Textual 39 | 40 | - [Textual Docs](https://textual.textualize.io/) - Build amazing TUIs (Text User Interfaces) with this innovative Python framework. 41 | - [Gallery](https://www.textualize.io/textual/gallery) 42 | 43 | ### Rich 44 | 45 | - [Rich Docs](https://rich.readthedocs.io/en/latest/) - Beautiful output in the terminal and Jupyter notebook with this powerful Python library. Tables, panels, progress bars, trees, syntax highlighting, pretty printing, and much more. 46 | - [Gallery](https://www.textualize.io/rich/gallery) 47 | 48 | ### Rich CLI 49 | 50 | - [Rich CLI Repository](https://github.com/Textualize/rich-cli.git) - Rich from the command prompt. Syntax highlight many file-types, with special support for markdown, json, and CSV tables. 51 | 52 | ## Community 53 | 54 | - [Textualize Community](https://community.textualize.io/) - This community is for those wishing interesting in build user interfaces within the terminal using Rich and Textual. 55 | 56 | ### Third Party Applications 57 | 58 | - [Markdown Browser](https://github.com/willmcgugan/textual-markdown) - Markdown in the terminal. 59 | - [Kupo](https://github.com/darrenburns/kupo) - A terminal file browser, kupo! 60 | - [Dunk](https://github.com/darrenburns/dunk) - Prettier git diffs in the terminal 🎨. 61 | - [Shira](https://github.com/darrenburns/shira) - The python inspector 🔍. 62 | - [Autocomplete](https://github.com/darrenburns/textual-autocomplete) - Easily add autocomplete dropdowns to your Textual apps. 63 | - [Rich Pixels](https://github.com/darrenburns/rich-pixels) - A Rich-compatible library for writing pixel images and ASCII art to the terminal. 64 | - [Astview](https://github.com/davep/textual-astview) - A Textual-based Python AST viewing widget library and application. 65 | - [FivePyFive](https://github.com/davep/fivepyfive) - An annoying puzzle for the terminal; built with Textual. 66 | - [Canvas](https://github.com/davep/textual-canvas) - A simple character-based canvas widget for use with Textual. 67 | - [HumBLE Explorer](https://github.com/koenvervloesem/humble-explorer) - A cross-platform, command-line and human-friendly Bluetooth Low Energy Scanner built with Textual. 68 | - [Select](https://github.com/mitosch/textual-select) - A simple drop-down (select) for Textual with an optional search functionality. 69 | - [Imageview](https://github.com/adamviola/textual-imageview) - A simple terminal-based image viewer. 70 | - [Terminal](https://github.com/mitosch/textual-terminal) - A terminal emulator widget for Textual. 71 | - [Jtree](https://github.com/oleksis/jtree) - A command line interface (CLI) for displaying JavaScript Object Notation (JSON) in a tree view. 72 | - [NoteSH](https://github.com/cvaniak/notesh) - A fully functional sticky notes App in your Terminal. 73 | - [Fspicker](https://github.com/davep/textual-fspicker) - A Textual widget library for picking things in the filesystem. 74 | - [Datepicker](https://github.com/mitosch/textual-datepicker) - A datepicker for textual. 75 | - [Frogmouth](https://github.com/Textualize/frogmouth) - A Markdown browser for your terminal. 76 | - [Pain](https://github.com/1j01/textual-paint) - 🎨 MS Paint... in your terminal. 77 | - [RecoverPy](https://github.com/PabloLec/RecoverPy) - Interactively find and recover deleted or overwritten files from your terminal. 78 | - [Logmerger](https://github.com/ptmcg/logmerger) - TUI utility to view multiple log files with merged timeline. 79 | - [Palettepal](https://github.com/cdelker/palettepal) - Terminal-Based Color Editor and Palette Generator. 80 | - [Usolitaire](https://github.com/eliasdorneles/usolitaire) - Solitaire in your terminal, powered by Unicode. 81 | - [Upiano](https://github.com/eliasdorneles/upiano) - A Piano in your terminal. 82 | - [textual-plotext](https://pypi.org/project/textual-plotext/) - A Textual widget wrapper for the Plotext plotting library. 83 | - [Textual Query Sandbox](https://pypi.org/project/textual-query-sandbox/) - A simple tool for displaying terminal dimensions. 84 | - [Elia](https://github.com/darrenburns/elia) - A terminal ChatGPT client built with Textual. 85 | - [SSHaMan](https://github.com/cornyhorse/sshaman) - SSH Management. 86 | - [Tinboard](https://pypi.org/project/tinboard/) - A Pinboard client for the terminal. 87 | - [Harlequin](https://pypi.org/project/harlequin/) - The SQL IDE for Your Terminal. 88 | - [Toolong](https://github.com/Textualize/toolong) - A terminal application to view, tail, merge, and search log files (plus JSONL). 89 | - [Conways Game of Life](https://github.com/thomascrha/textual-game-of-life) - A implementation of Conway's game of life (cellular automata) in the terminal using textual. 90 | - [Django-TUI](https://github.com/anze3db/django-tui) - Inspect and run Django Commands in a text-based user interface (TUI). 91 | - [Rexi](https://github.com/royreznik/rexi) - Terminal UI for Regex Testing. 92 | 93 | 94 | ## Tutorials 95 | 96 | - Welcome to the [Textual Tutorial](https://textual.textualize.io/tutorial/)! 97 | 98 | > Please don't hesitate to make a PR if you have more resources to share. Check out [contributing.md](contributing.md) for more information. 99 | 100 | [textualize]: https://www.textualize.io/ 101 | -------------------------------------------------------------------------------- /awesome-textualize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/oleksis/awesome-textualize-projects/4b59dff3221a74387eeb5eb4a81449f05b1b23f0/awesome-textualize.png -------------------------------------------------------------------------------- /code-of-conduct.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | In the interest of fostering an open and welcoming environment, we as 6 | contributors and maintainers pledge to making participation in our project and 7 | our community a harassment-free experience for everyone, regardless of age, body 8 | size, disability, ethnicity, gender identity and expression, level of experience, 9 | nationality, personal appearance, race, religion, or sexual identity and 10 | orientation. 11 | 12 | ## Our Standards 13 | 14 | Examples of behavior that contributes to creating a positive environment 15 | include: 16 | 17 | - Using welcoming and inclusive language 18 | - Being respectful of differing viewpoints and experiences 19 | - Gracefully accepting constructive criticism 20 | - Focusing on what is best for the community 21 | - Showing empathy towards other community members 22 | 23 | Examples of unacceptable behavior by participants include: 24 | 25 | - The use of sexualized language or imagery and unwelcome sexual attention or 26 | advances 27 | - Trolling, insulting/derogatory comments, and personal or political attacks 28 | - Public or private harassment 29 | - Publishing others' private information, such as a physical or electronic 30 | address, without explicit permission 31 | - Other conduct which could reasonably be considered inappropriate in a 32 | professional setting 33 | 34 | ## Our Responsibilities 35 | 36 | Project maintainers are responsible for clarifying the standards of acceptable 37 | behavior and are expected to take appropriate and fair corrective action in 38 | response to any instances of unacceptable behavior. 39 | 40 | Project maintainers have the right and responsibility to remove, edit, or 41 | reject comments, commits, code, wiki edits, issues, and other contributions 42 | that are not aligned to this Code of Conduct, or to ban temporarily or 43 | permanently any contributor for other behaviors that they deem inappropriate, 44 | threatening, offensive, or harmful. 45 | 46 | ## Scope 47 | 48 | This Code of Conduct applies both within project spaces and in public spaces 49 | when an individual is representing the project or its community. Examples of 50 | representing a project or community include using an official project e-mail 51 | address, posting via an official social media account, or acting as an appointed 52 | representative at an online or offline event. Representation of a project may be 53 | further defined and clarified by project maintainers. 54 | 55 | ## Enforcement 56 | 57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 58 | reported by contacting the project team. All 59 | complaints will be reviewed and investigated and will result in a response that 60 | is deemed necessary and appropriate to the circumstances. The project team is 61 | obligated to maintain confidentiality with regard to the reporter of an incident. 62 | Further details of specific enforcement policies may be posted separately. 63 | 64 | Project maintainers who do not follow or enforce the Code of Conduct in good 65 | faith may face temporary or permanent repercussions as determined by other 66 | members of the project's leadership. 67 | 68 | ## Attribution 69 | 70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, 71 | available at [http://contributor-covenant.org/version/1/4][version] 72 | 73 | [homepage]: http://contributor-covenant.org 74 | [version]: http://contributor-covenant.org/version/1/4/ 75 | -------------------------------------------------------------------------------- /contributing.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | Please note that this project is released with a [Contributor Code of Conduct](code-of-conduct.md). By participating in this project you agree to abide by its terms. 4 | 5 | If you are new to open source, I've written a [guide for how to contribute](https://css-tricks.com/how-to-contribute-to-an-open-source-project/). 6 | 7 | > The pull request should have a useful title. Pull requests with `Update readme.md` as title will be closed. Please carefully read everything in `Adding to this list`. 8 | 9 | ## Table of Contents 10 | 11 | - [Adding to this list](#adding-to-this-list) 12 | - [Updating your Pull Request](#updating-your-pull-request) 13 | 14 | ## Adding to this list 15 | 16 | Please ensure your pull request adheres to the following guidelines: 17 | 18 | - Please submit your contribution at the end of the list of the relevant category. If you don't find a section that it belongs in, please make one. 19 | - Please don't use a long description. The description should not wrap to 3 lines, ideally it should fit on one. 20 | - Search previous suggestions before making a new one, as yours may be a duplicate. 21 | - Please don't use bold or italics unless it's somehow appropriate to the link. 22 | - Make sure the list is useful before submitting. That implies it has enough content and every item has a good succinct description. 23 | - Make an individual pull request for each suggestion. 24 | - Use [Title Casing](https://titlecaseconverter.com/). 25 | - Use the following format: `[List Name](link)` 26 | - New categories or improvements to the existing categorization are welcome. 27 | - Please check your spelling and grammar. 28 | - Make sure your text editor is set to remove trailing whitespace. 29 | - The pull request and commit should have a useful title. 30 | - The body of your commit message should contain a link to the repository. 31 | 32 | Thank you for your suggestions! 33 | 34 | ## Updating your Pull Request 35 | 36 | Sometimes, we will ask you to edit your Pull Request before it is included. This is normally due to spelling errors or because your PR didn't match the awesome-actions list guidelines. 37 | 38 | [Here](https://github.com/RichardLitt/knowledge/blob/master/github/amending-a-commit-guide.md) is a write up on how to change a Pull Request, and the different ways you can do that. 39 | --------------------------------------------------------------------------------