Every Textual application is now a web application.
With 3 lines of code, any Textual app can run in the browser.
|
This is Posting running in the terminal. |
|
|
This is Posting running in the browser. |
|
First, install (or upgrade) Textual.
Then install textual-serve from PyPI:
pip install textual-serve
First import the Server class:
from textual_serve.server import ServerThen create a Server instance and pass the command that launches your Textual app:
server = Server("python -m textual")The command can be anything you would enter in the shell, as long as it results in a Textual app running.
Finally, call the serve method:
server.serve()You will now be able to click on the link in the terminal to run your app in a browser.
Run this code, visit http://localhost:8000
from textual_serve.server import Server
server = Server("python -m textual")
server.serve()The Server class has the following parameters:
The Server.serve method accepts a debug parameter.
When set to True, this will enable textual devtools.
When you visit the app URL, the server launches an instance of your app in a subprocess, and communicates with it via a websocket.
This means that you can serve multiple Textual apps across all the CPUs on your system.
Note that Textual-serve uses a custom protocol to communicate with Textual apps. It does not simply expose a shell in your browser. There is no way for a malicious user to do anything the app-author didn't intend.
See also textual-web which serves Textual apps on a public URL.
You can consider this project to essentially be a self-hosted equivalent of Textual-web.


