crosstermion 0.1.4

The unification of crossterm and termion behind a common facade for use with feature flags
Documentation

Crosstermion is a utility crate to unify some types of both crates, allowing to easily build apps that use the leaner termion crate on unix systems, but resort to crossterm on windows systems.

Currently provided facilities are:

  • a Key type an an input_stream (async) to receive key presses
  • an AltenrativeRawTerminal which marries an alternative screen with raw mode
  • a way to create a tui or tui-react terminal with either the crossterm or the termion backend.

Features

All features work additively, but in case they are mutually exclusive, for instance in case of tui-react and tui, or crossterm and termion, the more general one will be chosen.

  • mutually exclusive
    • crossterm
      • provides Key conversion support from crossbeam::event::KeyEvent and an AlternativeRawTerminal
      • provides a threaded key input channel
      • additive
        • mutually exclusive
          • input-thread
            • Adds input handling by spawning a thread providing input via crossbeam channels
          • input-thread-flume
            • Adds input handling by spawning a thread providing input via flume channels
        • input-async
          • adds native async capabilites to crossterm, which works without spawning an extra thread thanks to mio.
    • termion
      • provides Key conversion support from termion::event::Key and an AlternativeRawTerminal
      • provides a threaded key input channel
      • additive
        • mutually exclusive
          • input-thread
            • Adds input handling by spawning a thread providing input via crossbeam channels
          • input-thread-flume
            • Adds input handling by spawning a thread providing input via flume channels
        • input-async
          • Spawn a thread and provide input events via a futures Stream
  • mutually exclusive
    • _using tui_ (mutually exclusive)
      • tui-termion implies termion feature
        • combines tui with termion and provides a tui::Terminal with termion backend
      • tui-crossterm implies crossterm feature
        • combines tui with crossterm and provides a tui::Terminal with crossterm backend
    • using tui-react (mutually exclusive)
      • tui-react-termion implies termion feature
        • combines tui-react with crossterm and provides a tui::Terminal with crossterm backend
      • tui-react-crossterm implies crossterm feature
        • combines tui-react with crossterm and provides a tui::Terminal with crossterm backend
  • flume-async
    • activates 'flume/async'
    • note that 'flume/select' is always active, as it is just a few lines of code without any additional dependencies