No description
Find a file
Dave Pearson 26e6dbbfa3
Swap to a dual-working approach
Plan C; or is it plan D? Something like that. Anyway... in this approach we
keep a single "forever" async task worker per directory tree, which in turn
looks at the async Queue, and when a new node appears on it it starts a
short-lived thread to load the directory data.

This seems to be working fine on macOS. Next up is testing on Windows.
2023-05-17 13:28:07 +01:00
.faq update faq 2023-01-18 19:22:32 +00:00
.github Run workflows when they are changed. 2023-05-16 11:43:31 +01:00
docs Screen docs (#2579) 2023-05-16 13:44:06 +01:00
examples fix for code browser type error (#2514) 2023-05-08 18:42:10 +01:00
imgs added demo.svg back for pypi 2022-10-22 21:30:12 +01:00
notes remove useless note 2022-10-22 08:36:52 +01:00
questions Datatable scrolling faq (#2477) 2023-05-04 11:42:19 +01:00
reference spacing diagram 2023-05-12 14:03:53 +02:00
src/textual Swap to a dual-working approach 2023-05-17 13:28:07 +01:00
tests Merge pull request #2567 from davep/issue/2557/select-update 2023-05-16 15:11:29 +01:00
tools Remove 'action' column from bindings. 2023-01-25 15:00:45 +00:00
.coveragerc Sorting 2023-02-07 13:38:21 +00:00
.gitignore Work towards having a single nav file 2023-02-08 14:36:56 +00:00
.pre-commit-config.yaml Add isort pre-commit hook, sort imports in src and test directories 2023-02-09 13:28:08 +00:00
CHANGELOG.md Merge branch 'main' into directory-tree-work-in-worker 2023-05-16 15:16:31 +01:00
CODE_OF_CONDUCT.md Added the Code of Conduct 2022-02-04 23:36:37 +06:00
docs.md Restore the content of docs.md 2022-11-17 15:51:38 +00:00
FAQ.md Datatable scrolling faq (#2477) 2023-05-04 11:42:19 +01:00
faq.yml Added faqtory 2022-12-18 09:50:44 +00:00
LICENSE Initial commit 2021-04-08 16:24:48 +01:00
Makefile Add a Makefile target for building the FAQ 2023-03-30 11:26:48 +01:00
mkdocs-common.yml Don't expose snippets publically. (#2300) 2023-04-18 10:19:43 +01:00
mkdocs-nav.yml Select widget (#2501) 2023-05-08 10:55:39 +01:00
mkdocs-offline.yml Work towards having a single nav file 2023-02-08 14:36:56 +00:00
mkdocs-online.yml Work towards having a single nav file 2023-02-08 14:36:56 +00:00
mypy.ini Drop implicit uvloop support. 2023-03-27 18:37:21 +01:00
poetry.lock Implement a Progress Bar widget. (#2333) 2023-04-26 15:25:39 +01:00
pyproject.toml fix for code browser type error (#2514) 2023-05-08 18:42:10 +01:00
README.md Update README.md 2023-03-28 17:43:48 +01:00

Textual splash image

Discord

Textual

Textual is a Rapid Application Development framework for Python.

Build sophisticated user interfaces with a simple Python API. Run your apps in the terminal and (coming soon) a web browser!

🎬 Demonstration

A quick run through of some Textual features.

https://user-images.githubusercontent.com/554369/197355913-65d3c125-493d-4c05-a590-5311f16c40ff.mov

About

Textual adds interactivity to Rich with an API inspired by modern web development.

On modern terminal software (installed by default on most systems), Textual apps can use 16.7 million colors with mouse support and smooth flicker-free animation. A powerful layout engine and re-usable components makes it possible to build apps that rival the desktop and web experience.

Compatibility

Textual runs on Linux, macOS, and Windows. Textual requires Python 3.7 or above.

Installing

Install Textual via pip:

pip install "textual[dev]"

The addition of [dev] installs Textual development tools. See the docs if you need help getting started.

Demo

Run the following command to see a little of what Textual can do:

python -m textual

Textual demo

Documentation

Head over to the Textual documentation to start building!

Join us on Discord

Join the Textual developers and community on our Discord Server.

Examples

The Textual repository comes with a number of examples you can experiment with or use as a template for your own projects.

🎬 Code browser

This is the code_browser.py example which clocks in at 61 lines (including docstrings and blank lines).

https://user-images.githubusercontent.com/554369/197188237-88d3f7e4-4e5f-40b5-b996-c47b19ee2f49.mov

📷 Calculator

This is calculator.py which demonstrates Textual grid layouts.

calculator screenshot

🎬 Stopwatch

This is the Stopwatch example from the tutorial.

https://user-images.githubusercontent.com/554369/197360718-0c834ef5-6285-4d37-85cf-23eed4aa56c5.mov

Reference commands

The textual command has a few sub-commands to preview Textual styles.

🎬 Easing reference

This is the easing reference which demonstrates the easing parameter on animation, with both movement and opacity. You can run it with the following command:

textual easing

https://user-images.githubusercontent.com/554369/196157100-352852a6-2b09-4dc8-a888-55b53570aff9.mov

🎬 Borders reference

This is the borders reference which demonstrates some of the borders styles in Textual. You can run it with the following command:

textual borders

https://user-images.githubusercontent.com/554369/196158235-4b45fb78-053d-4fd5-b285-e09b4f1c67a8.mov

🎬 Colors reference

This is a reference for Textual's color design system.

textual colors

https://user-images.githubusercontent.com/554369/197357417-2d407aac-8969-44d3-8250-eea45df79d57.mov