# tmux_interface [![Build Status](https://github.com/AntonGepting/tmux-interface-rs/actions/workflows/actions.yml/badge.svg)](https://github.com/AntonGepting/tmux-interface-rs/actions) [![Crates.io](https://img.shields.io/crates/v/tmux_interface.svg)](https://crates.io/crates/tmux_interface) [![Documentation](https://docs.rs/tmux_interface/badge.svg)](https://docs.rs/tmux_interface) ## Description `tmux_interface` is a library for communication with [TMUX](https://github.com/tmux/tmux) via CLI written in [Rust](https://www.rust-lang.org/) programming language. The crate documentation can be found on the [docs.rs](https://docs.rs/tmux_interface) 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). ```text [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](https://github.com/AntonGepting/tmux-interface-rs/actions) under following conditions: - OS: - [x] Linux (Ubuntu 20.04.2 LTS Focal Fossa, x64) - [ ] Windows - [ ] MacOS (10.13.6 High Sierra, x64) - Rust: - [x] stable - [ ] beta - [ ] nightly - Tmux (covered tmux versions crate features): - [ ] master - `tmux_X_X` - [x] 3.3a - `tmux_3_3a` - [x] 3.3 - `tmux_3_3` - [x] 3.2a - `tmux_3_2a` - [x] 3.2 - `tmux_3_2` - [x] 3.1c - `tmux_3_1c` - [x] 3.1b - `tmux_3_1b` - [x] 3.1a - `tmux_3_1a` - [x] 3.1 - `tmux_3_1` - [x] 3.0a - `tmux_3_0a` - [x] 3.0 - `tmux_3_0` - [x] 2.9a - `tmux_2_9a` - [x] 2.9 - `tmux_2_9` - [x] 2.8 - `tmux_2_8` - [x] 2.7 - `tmux_2_7` - [x] 2.6 - `tmux_2_6` - [x] 2.5 - `tmux_2_5` - [x] 2.4 - `tmux_2_4` - [x] 2.3 - `tmux_2_3` - [x] 2.2 - `tmux_2_2` - [x] 2.1 - `tmux_2_1` - [x] 2.0 - `tmux_2_0` - [x] 1.9a - `tmux_1_9a` - [x] 1.9 - `tmux_1_9` - [x] 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 * Kian-Meng Ang ([kianmeng](https://github.com/kianmeng)) * Martin Terneborg ([MTBorg](https://github.com/MTBorg)) * Yanus Poluektovich ([ypoluektovich](https://github.com/ypoluektovich)) ## License `tmux_interface` library is licensed under the MIT license. Please read the [license file](LICENSE.md) in the repository for more information. ## See also - [Rust programming language](https://www.rust-lang.org/) - [crates.io](https://www.crates.io/) - [docs.rs](https://www.docs.rs/) - [rust-clippy](https://github.com/rust-lang/rust-clippy) - [TMUX](https://github.com/tmux/tmux) - [TMUX man](http://man7.org/linux/man-pages/man1/tmux.1.html)