Command-Line & Dev Tools

textual

Full, clickable app interfaces that live entirely inside a text terminal, no browser, no window manager, just text.

Install it: pip install textual

What does it do?

Textual lets developers build genuinely interactive applications, with buttons, mouse clicks, scrolling panels, and animations, that run entirely inside a terminal window instead of a graphical desktop app or webpage. Imagine building a real app the way you’d build a website, complete with layout and styling rules, except instead of opening in a browser it opens as text on a command line. It uses a CSS-like styling system, so developers who know web design concepts can apply similar thinking to terminal apps. It even supports mouse interaction inside the terminal, which most people don’t realize is even possible.

See it in action

This launches a small interactive application that runs inside a terminal window and displays the text ‘Hello, Textual!’ on screen.

from textual.app import App, ComposeResult
from textual.widgets import Label

class HelloApp(App):
    def compose(self) -> ComposeResult:
        yield Label("Hello, Textual!")

if __name__ == "__main__":
    HelloApp().run()

Why would a non-developer care?

It represents a genuine revival of text-based software for modern uses. Server admins, remote developers over SSH, and anyone without a full graphical environment can now get a responsive app experience instead of a clunky old-school text menu.

Real-world examples

Textual comes from the same team behind Rich, and its most visible showcase is Textualize’s own suite of terminal apps, including a full-featured terminal-based system monitor and file manager. It’s popular among developers managing remote servers, where launching a graphical app isn’t an option but a plain text prompt feels too limiting.

Who uses it

Developers building admin dashboards, remote-server tools, and utilities meant to run over SSH connections where a full graphical interface isn’t practical.

How it compares to alternatives

It’s a considerable leap beyond older terminal UI libraries like urwid or curses, offering modern layout, CSS-style theming, and async support that those older tools were never designed for.

Fun fact

Textual apps can often run inside a web browser too, since the project also ships a way to serve terminal apps over the web.

New to Python and want to actually try libraries like this yourself?

Find a beginner-friendly course

Related libraries