# Term - a tui client

[![Build Status](https://travis-ci.com/Amityville-DE/fowlhouse_bay.svg?branch=master)](https://travis-ci.com/Amityville-DE/fowlhouse_bay)
![Crates.io](https://img.shields.io/crates/v/fowlhouse_bay)
![docs.rs](https://docs.rs/fowlhouse_bay/badge.svg)
![Crates.io](https://img.shields.io/crates/l/fowlhouse_bay)
[![](https://tokei.rs/b1/github/Amityville-DE/fowlhouse_bay?category=code)](https://github.com/Amityville-DE/fowlhouse_bay)
[![](https://tokei.rs/b1/github/Amityville-DE/fowlhouse_bay?category=comments)](https://github.com/Amityville-DE/fowlhouse_bay)

Term is an easy to use tui client, which enables the user to create ASCII art windows on:

* Windows 10 PowerShell
* Linux and OSX Terminals

```text
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ PowerShell                                           _ □ x ┃
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃╔Logfile:═════════════════════╗╔PingPong:══════════════════╗┃
┃║Hello, my name is 'Term'.    ║║ping (0)                   ║┃
┃║I am a tui client.           ║║pong (0)                   ║┃
┃╚═════════════════════════════╝║ping (1)                   ║┃
┃                               ╚═══════════════════════════╝┃
┃STDIN:~$ command x y                                        ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
```

Download from [crates.io](https://crates.io/crates/fowlhouse_bay) and read the documentation at [doc.rs](https://docs.rs/fowlhouse_bay/).

⚠ Warning, using this crate is not recommended yet. The API is highly unstable and the crate is **not tested at all**.

## Usage

```toml
# Cargo.toml
[dependencies]
fowlhouse_bay = "0.2.3"
```

## Example

```rust
use fowlhouse_bay::Term;
use fowlhouse_bay::window::Config;
use fowlhouse_bay::window::Source;
use fowlhouse_bay::window::Style;

type ApplicationResult = Result<(), Box<dyn std::error::Error + Send + Sync + 'static>>;

fn main() -> ApplicationResult {

    let (mut term, standard_input_channel, _, _) = Term::new();

    let conf_win_one = Config {
        window_name: String::from("Logfile"),
        window_width: 50,
        window_height: 10,
        position_x: 0,
        position_y: 0,
        source: Source::StandardInputChannel,
        style: Style::Light,
    };

    term.create_window(conf_win_one)?;

    standard_input_channel.send(String::from("Hello, Term!"))?;

    term.join();

    Ok(())

}
```

___

(Rakino Island - Fowlhouse Bay: 36°43'28.1"S 174°56'34.6"E)
