{"id":13468898,"url":"https://github.com/urwid/urwid","last_synced_at":"2025-05-13T20:04:55.167Z","repository":{"id":37978587,"uuid":"535712","full_name":"urwid/urwid","owner":"urwid","description":"Console user interface library for Python (official repo)","archived":false,"fork":false,"pushed_at":"2025-05-06T14:15:11.000Z","size":10767,"stargazers_count":2896,"open_issues_count":131,"forks_count":318,"subscribers_count":57,"default_branch":"master","last_synced_at":"2025-05-06T18:40:48.119Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"urwid.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/urwid.png","metadata":{"files":{"readme":"README.rst","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":".github/CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2010-02-25T14:44:22.000Z","updated_at":"2025-05-06T17:00:10.000Z","dependencies_parsed_at":"2023-12-20T07:54:24.016Z","dependency_job_id":"53b096bb-d99c-4348-9045-4e9926d6dcc8","html_url":"https://github.com/urwid/urwid","commit_stats":{"total_commits":1697,"total_committers":145,"mean_commits":"11.703448275862069","dds":0.6929876252209781,"last_synced_commit":"d5635dfbec36857aa327ae657a9b6970e51b56a3"},"previous_names":[],"tags_count":106,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urwid%2Furwid","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urwid%2Furwid/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urwid%2Furwid/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/urwid%2Furwid/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/urwid","download_url":"https://codeload.github.com/urwid/urwid/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254020477,"owners_count":22000750,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T15:01:21.516Z","updated_at":"2025-05-13T20:04:55.141Z","avatar_url":"https://github.com/urwid.png","language":"Python","readme":"Urwid\n=====\n|pypi| |docs| |gitter| |ci| |pre-commit| |coveralls|\n\nAbout\n=====\n\nUrwid is a console user interface library for Python on Linux, OSX, Cygwin or other unix-like OS\nand partially supports Windows OS (see below).\n\nIt includes many features useful for text console application developers including:\n\n- Applications resize quickly and smoothly\n- Automatic, programmable text alignment and wrapping\n- Simple markup for setting text attributes within blocks of text\n- Powerful list box with programmable content for scrolling all widget types\n- Your choice of event loops: Twisted, Glib, Tornado, asyncio, trio, ZeroMQ or select-based loop\n- Pre-built widgets include edit boxes, buttons, check boxes and radio buttons\n- Display modules include raw, curses, and experimental LCD and web displays\n- Support for UTF-8, simple 8-bit and CJK encodings\n- 24-bit (true color), 256 color, and 88 color mode support\n- Compatible with Python 3.7+ and PyPy\n\nHome Page:\n  http://urwid.org/\n\nInstallation\n============\n\nTo install using pip\n\n.. code:: bash\n\n   pip install urwid\n\nFor advanced functionality extra requirements need to be installed.\nExample for ZeroMQ event loop and LCD display:\n\n.. code:: bash\n\n    pip install urwid[serial,zmq]\n\nAlternatively if you are on Debian or Ubuntu\n\n.. code:: bash\n\n   apt-get install python3-urwid\n\nWindows support notes\n=====================\n\n* Not supported:\n\n1. Terminal widget and all related render API (TermCanvas, TermCharset, TermModes, TermScroller)\n2. Any file descriptors except sockets (Windows OS limitation)\n3. ZMQEventLoop.\n\n* Special requirements:\n\n1. Extra libraries required for curses display support:\n\n.. code-block:: bash\n\n    pip install urwid[curses]\n\n* CursesDisplay incorrectly handles mouse input in case of fast actions.\n* Only UTF-8 mode is supported.\n\n\nTesting\n=======\n\nTo run tests locally, install \u0026 run `tox`. You must have\nappropriate Python versions installed to run `tox` for\neach of them.\n\nTo test code in all Python versions:\n\n.. code:: bash\n\n    tox                     # Test all versions specified in tox.ini:\n    tox -e py39             # Test Python 3.9 only\n    tox -e py39,py10,pypy3  # Test Python 3.9, Python 3.10 \u0026 pypy3\n\nSupported Python versions\n=========================\n\n- 3.9\n- 3.10\n- 3.11\n- 3.12\n- 3.13\n- pypy3\n\nAuthors\n=======\n\nCreator\n-------\n\n`wardi \u003c//github.com/wardi\u003e`_\n\nMaintainers\n-----------\n\n`and3rson \u003c//github.com/and3rson\u003e`_,\n`tonycpsu \u003c//github.com/tonycpsu\u003e`_,\n`ulidtko \u003c//github.com/ulidtko\u003e`_,\n`penguinolog \u003c//github.com/penguinolog\u003e`_\n\nContributors\n------------\n\n`1in7billion \u003c//github.com/1in7billion\u003e`_,\n`abadger \u003c//github.com/abadger\u003e`_,\n`agrenott \u003c//github.com/agrenott\u003e`_,\n`akorb \u003c//github.com/akorb\u003e`_,\n`alethiophile \u003c//github.com/alethiophile\u003e`_,\n`aleufroy \u003c//github.com/aleufroy\u003e`_,\n`alobbs \u003c//github.com/alobbs\u003e`_,\n`amjltc295 \u003c//github.com/amjltc295\u003e`_,\n`and-semakin \u003c//github.com/and-semakin\u003e`_,\n`andrewshadura \u003c//github.com/andrewshadura\u003e`_,\n`andy-z \u003c//github.com/andy-z\u003e`_,\n`anttin2020 \u003c//github.com/anttin2020\u003e`_,\n`Apteryks \u003c//github.com/Apteryks\u003e`_,\n`Arfrever \u003c//github.com/Arfrever\u003e`_,\n`AutoAwesome \u003c//github.com/AutoAwesome\u003e`_,\n`belak \u003c//github.com/belak\u003e`_,\n`berney \u003c//github.com/berney\u003e`_,\n`bk2204 \u003c//github.com/bk2204\u003e`_,\n`BkPHcgQL3V \u003c//github.com/BkPHcgQL3V\u003e`_,\n`bwesterb \u003c//github.com/bwesterb\u003e`_,\n`carlos-jenkins \u003c//github.com/carlos-jenkins\u003e`_,\n`Certseeds \u003c//github.com/Certseeds\u003e`_,\n`Chipsterjulien \u003c//github.com/Chipsterjulien\u003e`_,\n`chrisspen \u003c//github.com/chrisspen\u003e`_,\n`cltrudeau \u003c//github.com/cltrudeau\u003e`_,\n`Codeberg-AsGithubAlternative-buhtz \u003c//github.com/Codeberg-AsGithubAlternative-buhtz\u003e`_,\n`cortesi \u003c//github.com/cortesi\u003e`_,\n`d0c-s4vage \u003c//github.com/d0c-s4vage\u003e`_,\n`derdon \u003c//github.com/derdon\u003e`_,\n`dholth \u003c//github.com/dholth\u003e`_,\n`dimays \u003c//github.com/dimays\u003e`_,\n`dlo \u003c//github.com/dlo\u003e`_,\n`dnaeon \u003c//github.com/dnaeon\u003e`_,\n`doddo \u003c//github.com/doddo\u003e`_,\n`douglas-larocca \u003c//github.com/douglas-larocca\u003e`_,\n`drestebon \u003c//github.com/drestebon\u003e`_,\n`dsotr \u003c//github.com/dsotr\u003e`_,\n`dwf \u003c//github.com/dwf\u003e`_,\n`EdwardBetts \u003c//github.com/EdwardBetts\u003e`_,\n`elenril \u003c//github.com/elenril\u003e`_,\n`EnricoBilla \u003c//github.com/EnricoBilla\u003e`_,\n`extempore \u003c//github.com/extempore\u003e`_,\n`fabiand \u003c//github.com/fabiand\u003e`_,\n`floppym \u003c//github.com/floppym\u003e`_,\n`flowblok \u003c//github.com/flowblok\u003e`_,\n`fmoreau \u003c//github.com/fmoreau\u003e`_,\n`goncalopp \u003c//github.com/goncalopp\u003e`_,\n`Gordin \u003c//github.com/Gordin\u003e`_,\n`GregIngelmo \u003c//github.com/GregIngelmo\u003e`_,\n`grzaks \u003c//github.com/grzaks\u003e`_,\n`gurupras \u003c//github.com/gurupras\u003e`_,\n`HarveyHunt \u003c//github.com/HarveyHunt\u003e`_,\n`Hoolean \u003c//github.com/Hoolean\u003e`_,\n`hukka \u003c//github.com/hukka\u003e`_,\n`hydratim \u003c//github.com/hydratim\u003e`_,\n`ids1024 \u003c//github.com/ids1024\u003e`_,\n`imrek \u003c//github.com/imrek\u003e`_,\n`isovector \u003c//github.com/isovector\u003e`_,\n`itaisod \u003c//github.com/itaisod\u003e`_,\n`ixxra \u003c//github.com/ixxra\u003e`_,\n`jeblair \u003c//github.com/jeblair\u003e`_,\n`johndeaton \u003c//github.com/johndeaton\u003e`_,\n`jonblack \u003c//github.com/jonblack\u003e`_,\n`jspricke \u003c//github.com/jspricke\u003e`_,\n`kedder \u003c//github.com/kedder\u003e`_,\n`Kelketek \u003c//github.com/Kelketek\u003e`_,\n`KennethNielsen \u003c//github.com/KennethNielsen\u003e`_,\n`kesipyc \u003c//github.com/kesipyc\u003e`_,\n`kkrolczyk \u003c//github.com/kkrolczyk\u003e`_,\n`Kwpolska \u003c//github.com/Kwpolska\u003e`_,\n`Lahorde \u003c//github.com/Lahorde\u003e`_,\n`laike9m \u003c//github.com/laike9m\u003e`_,\n`larsks \u003c//github.com/larsks\u003e`_,\n`lfam \u003c//github.com/lfam\u003e`_,\n`lgbaldoni \u003c//github.com/lgbaldoni\u003e`_,\n`lighth7015 \u003c//github.com/lighth7015\u003e`_,\n`livibetter \u003c//github.com/livibetter\u003e`_,\n`Lothiraldan \u003c//github.com/Lothiraldan\u003e`_,\n`Mad-ness \u003c//github.com/Mad-ness\u003e`_,\n`madebr \u003c//github.com/madebr\u003e`_,\n`magniff \u003c//github.com/magniff\u003e`_,\n`marlox-ouda \u003c//github.com/marlox-ouda\u003e`_,\n`mattymo \u003c//github.com/mattymo\u003e`_,\n`mdtrooper \u003c//github.com/mdtrooper\u003e`_,\n`mgk \u003c//github.com/mgk\u003e`_,\n`mimi1vx \u003c//github.com/mimi1vx\u003e`_,\n`mobyte0 \u003c//github.com/mobyte0\u003e`_,\n`MonAaraj \u003c//github.com/MonAaraj\u003e`_,\n`MonthlyPython \u003c//github.com/MonthlyPython\u003e`_,\n`mountainstorm \u003c//github.com/mountainstorm\u003e`_,\n`mselee \u003c//github.com/mselee\u003e`_,\n`mwhudson \u003c//github.com/mwhudson\u003e`_,\n`naquad \u003c//github.com/naquad\u003e`_,\n`nchavez324 \u003c//github.com/nchavez324\u003e`_,\n`neumond \u003c//github.com/neumond\u003e`_,\n`nolash \u003c//github.com/nolash\u003e`_,\n`ntamas \u003c//github.com/ntamas\u003e`_,\n`nyov \u003c//github.com/nyov\u003e`_,\n`ocarneiro \u003c//github.com/ocarneiro\u003e`_,\n`okayzed \u003c//github.com/okayzed\u003e`_,\n`pquentin \u003c//github.com/pquentin\u003e`_,\n`rbanffy \u003c//github.com/rbanffy\u003e`_,\n`ReddyKilowatt \u003c//github.com/ReddyKilowatt\u003e`_,\n`regebro \u003c//github.com/regebro\u003e`_,\n`renegarcia \u003c//github.com/renegarcia\u003e`_,\n`rianhunter \u003c//github.com/rianhunter\u003e`_,\n`roburban \u003c//github.com/roburban\u003e`_,\n`RRMoelker \u003c//github.com/RRMoelker\u003e`_,\n`rwarren \u003c//github.com/rwarren\u003e`_,\n`scopatz \u003c//github.com/scopatz\u003e`_,\n`seanhussey \u003c//github.com/seanhussey\u003e`_,\n`seonon \u003c//github.com/seonon\u003e`_,\n`shadedKE \u003c//github.com/shadedKE\u003e`_,\n`sithglan \u003c//github.com/sithglan\u003e`_,\n`Sjc1000 \u003c//github.com/Sjc1000\u003e`_,\n`sporkexec \u003c//github.com/sporkexec\u003e`_,\n`squrky \u003c//github.com/squrky\u003e`_,\n`ssbr \u003c//github.com/ssbr\u003e`_,\n`techdragon \u003c//github.com/techdragon\u003e`_,\n`thehunmonkgroup \u003c//github.com/thehunmonkgroup\u003e`_,\n`thisch \u003c//github.com/thisch\u003e`_,\n`thornycrackers \u003c//github.com/thornycrackers\u003e`_,\n`TomasTomecek \u003c//github.com/TomasTomecek\u003e`_,\n`tompickering \u003c//github.com/tompickering\u003e`_,\n`tony \u003c//github.com/tony\u003e`_,\n`ttanner \u003c//github.com/ttanner\u003e`_,\n`tu500 \u003c//github.com/tu500\u003e`_,\n`uSpike \u003c//github.com/uSpike\u003e`_,\n`vega0 \u003c//github.com/vega0\u003e`_,\n`vit1251 \u003c//github.com/vit1251\u003e`_,\n`waveform80 \u003c//github.com/waveform80\u003e`_,\n`Wesmania \u003c//github.com/Wesmania\u003e`_,\n`xandfury \u003c//github.com/xandfury\u003e`_,\n`xndcn \u003c//github.com/xndcn\u003e`_,\n`zhongshangwu \u003c//github.com/zhongshangwu\u003e`_,\n`zrax \u003c//github.com/zrax\u003e`_\n\n\n.. |pypi| image:: https://img.shields.io/pypi/v/urwid\n    :alt: current version on PyPi\n    :target: https://pypi.python.org/pypi/urwid\n\n.. |docs| image:: https://github.com/urwid/urwid/actions/workflows/documentation.yml/badge.svg?branch=master\n    :alt: Documentation Status\n    :target: https://urwid.org\n\n.. |gitter| image:: https://img.shields.io/gitter/room/urwid/community\n   :alt: Gitter\n   :target: https://gitter.im/urwid/community\n\n.. |ci| image:: https://github.com/urwid/urwid/actions/workflows/pythonpackage.yml/badge.svg?branch=master\n    :target: https://github.com/urwid/urwid/actions\n    :alt: CI status\n\n.. |pre-commit| image:: https://img.shields.io/badge/pre--commit-enabled-brightgreen?logo=pre-commit\n   :target: https://github.com/pre-commit/pre-commit\n   :alt: pre-commit\n\n.. |coveralls| image:: https://coveralls.io/repos/github/urwid/urwid/badge.svg\n    :alt: test coverage\n    :target: https://coveralls.io/github/urwid/urwid\n","funding_links":[],"categories":["Python","GUI Development","Programming Langugaes","📚 فهرست","ASCII UI/UX Frameworks \u0026 Foundations","Table of Contents"],"sub_categories":["کتابخانه هاي TUI","Imported: Upstream Snippet Gallery"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furwid%2Furwid","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Furwid%2Furwid","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Furwid%2Furwid/lists"}