Crates.io | workflow-terminal |
lib.rs | workflow-terminal |
version | 0.18.0 |
source | src |
created_at | 2022-09-16 13:27:52.360202 |
updated_at | 2024-09-07 17:00:38.909369 |
description | Terminal abstraction layer over Xterm.js and termion crates for creating terminal applications that function uniformly in native (console) and in browser (WASM32) environments. |
homepage | |
repository | https://github.com/workflow-rs/workflow-rs |
max_upload_size | |
id | 667355 |
size | 495,090 |
workflow-terminal
Part of the workflow-rs
application framework.
Terminal and command line interface (a custom shell) that runs in the browser and in the native environment.
Workflow Terminal allows you to create a terminal interface that operates symmetrically in OS shell (console) as well as in the web browser. This crate is useful if you want to create a command-line interface for an application meant to run natively on bare metal and in the browser. This crate is especially useful for prototyping and testing wasm32 browser-compatible platform-neutral applications and crates.
This functionality is achieved by creating a terminal struct Terminal
that simultaneously wraps:
This crate only depends on a minimal set of other crates and has no external (JavaScript) dependencies. XtermJS es6 modules are injected directly into DOM during the Terminal initialization phase. This allows the terminal to be loaded using any http server without any additional configuration. (due to browser restrictions, WASM can not be loaded into a static page)
On the backend, you have a simple Cli
trait which receives user-entered command line.
The Terminal interface also provides basic facilities such as prompt for user text and passwrod entry, access to command history and binding to logging facilities (in case you want to output to the termina outside of the terminal command callback).
Please note: this implementation is based on async Rust and is currently hard-wired to run on top of tokio in the console and uses wasm_bindgen and web-sys to interface with the browser environment.
Basic examples on using this crate can be found here: https://github.com/workflow-rs/workflow-rs/tree/master/examples/terminal