Skip to content

AntonGepting/tmux-interface-rs

Repository files navigation

tmux_interface

Build Status Crates.io Documentation

Description

tmux_interface is a library for communication with TMUX via CLI written in Rust programming language. The crate documentation can be found on the docs.rs page.

Usage

  1. Add a dependency in your Cargo.toml. Versions below 1.0.0 are mostly for development and testing purposes (use them in your projects on your own risk, further versions may have different API).

    [dependencies]
    tmux_interface = "1.0.0"
    
  2. Add extern crate in your source file.

    extern crate tmux_interface;
    
  3. Use it's functions

    Example 1

    use tmux_interface::{HasSession, KillSession, NewSession, NewWindow, SplitWindow, Tmux};
    
    let target_session = "example_1";
    
    // tmux new -d -s example_1 ; neww ; splitw -v
    Tmux::new()
        .add_command(NewSession::new().detached().session_name(target_session))
        .add_command(NewWindow::new())
        .add_command(SplitWindow::new().vertical())
        .output()
        .unwrap();
    
    // tmux has -t example_1
    let status = Tmux::with_command(HasSession::new().target_session(target_session))
        .status()
        .unwrap()
        .success();
    
    assert!(status);
    
    // tmux kill-session -t example_1
    Tmux::with_command(KillSession::new().target_session(target_session))
        .output()
        .unwrap();
    
    

Testing

The library is still in experimental development stage (unstable).

  • many features are unimplemented or not well tested
  • some APIs/structures/names/... can be changed in the future
  • some design patterns of the library can be changed
  • almost all library documentation is missing at the moment
  • ...

The library was tested using GitHub Actions under following conditions:

  • OS:

    • Linux (Ubuntu 20.04.2 LTS Focal Fossa, x64)
    • Windows
    • MacOS (10.13.6 High Sierra, x64)
  • Rust:

    • stable
    • beta
    • nightly
  • Tmux (covered tmux versions crate features):

    • master - tmux_X_X
    • 3.4 - tmux_3_4
    • 3.3a - tmux_3_3a
    • 3.3 - tmux_3_3
    • 3.2a - tmux_3_2a
    • 3.2 - tmux_3_2
    • 3.1c - tmux_3_1c
    • 3.1b - tmux_3_1b
    • 3.1a - tmux_3_1a
    • 3.1 - tmux_3_1
    • 3.0a - tmux_3_0a
    • 3.0 - tmux_3_0
    • 2.9a - tmux_2_9a
    • 2.9 - tmux_2_9
    • 2.8 - tmux_2_8
    • 2.7 - tmux_2_7
    • 2.6 - tmux_2_6
    • 2.5 - tmux_2_5
    • 2.4 - tmux_2_4
    • 2.3 - tmux_2_3
    • 2.2 - tmux_2_2
    • 2.1 - tmux_2_1
    • 2.0 - tmux_2_0
    • 1.9a - tmux_1_9a
    • 1.9 - tmux_1_9
    • 1.8 - tmux_1_8
    • 1.7 - tmux_1_7
    • 1.6 - tmux_1_6
    • 1.5 - tmux_1_5
    • 1.4 - tmux_1_4 - tmux compilation error
    • 1.3 - tmux_1_3 - tmux compilation error
    • 1.2 - tmux_1_2 - tmux compilation error
    • 1.1 - tmux_1_1 - tmux compilation error
    • 1.0 - tmux_1_0 - tmux compilation error
    • 0.9 - tmux_0_9 - tmux compilation error
    • 0.8 - tmux_0_8 - tmux compilation error

Contributors

License

tmux_interface library is licensed under the MIT license. Please read the license file in the repository for more information.

See also

About

Rust language library for communication with TMUX via CLI

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages