Turn your Textual TUIs in to web applications
Project description
textual-serve
Every Textual application in 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. |
|
Getting Started
First, install (or upgrade) Textual.
Then install textual-serve
from PyPI:
pip install textual-serve
Creating a server
First import the Server class:
from textual_serve.server import Server
Then 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.
Summary
Run this code, visit http://localhost:8000
from textual_serve.server import Server
server = Server("python -m textual")
server.serve()
Configuration
The Server
class has the following parameters:
parameter | description |
---|---|
command | A shell command to launch a Textual app. |
host | The host of the web application (defaults to "localhost"). |
port | The port for the web application (defaults to 8000). |
title | The title show in the web app on load, leave as None to use the command. |
public_url | The public URL, if the server is behind a proxy. None for the local URL. |
statics_path | Path to statics folder, relative to server.py. Default uses directory in module. |
templates_path | Path to templates folder, relative to server.py. Default uses directory in module. |
The Server.serve
method accepts a debug
parameter.
When set to True
, this will enable textual devtools.
How does it work?
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
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.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for textual_serve-1.0.3-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e4001b2a1bee9950e9c46c242cab74bed5a7f95f9b17a511ac953b9dec35c85 |
|
MD5 | c3ddf096287eb2092163848e4a016d4e |
|
BLAKE2b-256 | 4326bbeca8487efc57461c3d30733a0e83a4fd6107d4199d7513de8cfb8cfb40 |