All Projects → AntonGepting → tmux-interface-rs

AntonGepting / tmux-interface-rs

Licence: MIT license
Rust language library for communication with TMUX via CLI

Programming Languages

rust
11053 projects
python
139335 projects - #7 most used programming language
shell
77523 projects

Projects that are alternatives of or similar to tmux-interface-rs

ArrayInterface.jl
Designs for new Base array interface primitives, used widely through scientific machine learning (SciML) and other organizations
Stars: ✭ 111 (+282.76%)
Mutual labels:  interface
dotfiles
My dotfiles
Stars: ✭ 23 (-20.69%)
Mutual labels:  tmux
EasyUI
ESP8266 User Interface Library.
Stars: ✭ 63 (+117.24%)
Mutual labels:  interface
Mimir
OSINT Threat Intel Interface - CLI for HoneyDB
Stars: ✭ 104 (+258.62%)
Mutual labels:  interface
kube-tmuxp
Tool to generate tmuxp configs that help to switch between multiple Kubernetes contexts safely.
Stars: ✭ 21 (-27.59%)
Mutual labels:  tmux
LTemplate
Extend Mathematica with LibraryLink and C++ with ease
Stars: ✭ 50 (+72.41%)
Mutual labels:  interface
xboxpy
Python module to interface with original Xbox hard- and software
Stars: ✭ 23 (-20.69%)
Mutual labels:  interface
dotfiles
These dotfiles could be your life.
Stars: ✭ 42 (+44.83%)
Mutual labels:  tmux
rofi-tmux
✔️ rft (rofi-tmux). Quickly switches tmux sessions, windows and tmuxinator projects
Stars: ✭ 22 (-24.14%)
Mutual labels:  tmux
SimpleCLI
Command Line Interface Library for Arduino
Stars: ✭ 197 (+579.31%)
Mutual labels:  interface
Dot-It-Up
A collection of dotfile scripts, plugins, and clever hacks so that you can become the master of your own OS! 🚀
Stars: ✭ 254 (+775.86%)
Mutual labels:  tmux
dotfiles
my personal dotfiles mac
Stars: ✭ 39 (+34.48%)
Mutual labels:  tmux
tmux.vim
[DEPRECATED] .tmux.conf syntax highlighting
Stars: ✭ 47 (+62.07%)
Mutual labels:  tmux
dotfiles
My dotfiles for Bash/Zsh, Vim/Neovim, Doom Emacs, tmux, Git, terminal emulators, JupyterLab, aria2, mpv, Nix and Homebrew
Stars: ✭ 149 (+413.79%)
Mutual labels:  tmux
dotfiles
Configuration files for my setup
Stars: ✭ 24 (-17.24%)
Mutual labels:  tmux
dotfiles
NeoVim + git + zsh + tmux bliss
Stars: ✭ 19 (-34.48%)
Mutual labels:  tmux
tmux-slay
TMUX script to run commands in a background session. Similar to abduco/dtach.
Stars: ✭ 18 (-37.93%)
Mutual labels:  tmux
google streetview
A command line tool and module for Google Street View Image API
Stars: ✭ 77 (+165.52%)
Mutual labels:  interface
dotfiles
🍀 Vim/Neovim + Tmux + Zsh + Alacritty = Build your own fantastic development environment
Stars: ✭ 65 (+124.14%)
Mutual labels:  tmux
libgen-downloader
A simple tool to search and download ebooks from libgen via terminal user interface.
Stars: ✭ 98 (+237.93%)
Mutual labels:  interface

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 the new crate dependency in your Cargo.toml.

    • Using defaults (by default: default = ["tmux_2_8", "cmd_alias"] will be set)

      [dependencies]
      tmux_interface = "^0.1.0"
      
    • Using user specified tmux version (set custom tmux version feature, used for conditional compilaton):

      There is an optional dependency parameter features in Cargo.toml, to specify the compatible version of tmux. Because different tmux versions may have incompatible CLI changes. Following tmux versions are currently supported as library features:

      tmux_0_8, tmux_0_9, tmux_1_0, tmux_1_1, tmux_1_2, tmux_1_3, tmux_1_4, tmux_1_5, tmux_1_6, tmux_1_7, tmux_1_8, tmux_1_9, tmux_1_9a, tmux_2_0, tmux_2_1, tmux_2_2, tmux_2_3, tmux_2_4, tmux_2_5, tmux_2_6, tmux_2_7, tmux_2_8, tmux_2_9, tmux_2_9a, tmux_3_0, tmux_3_0a, tmux_3_1, tmux_3_1a, tmux_3_1b, tmux_3_1c, tmux_X_X

      [dependencies]
      tmux_interface = {
          version = "^0.1.0",
          features = ["tmux_2_6"]
          default-features = false,
      }
      

      by default tmux_2_8 is used. It can be removed with --no-default-features cargo command line option or with default-features = false option in Cargo.toml in case of using different tmux version.

    • Using library from local repository:

      [dependencies]
      tmux_interface = {
          version = "^0.1.0",
          path = "../tmux-interface",
          features = ["tmux_X_X"]
      }
      
    • Using library from remote repository (for example using developing branch):

      [dependencies]
      tmux_interface = {
          git = "https://github.com/AntonGepting/tmux-interface-rs.git", branch = "dev",
          features = ["tmux_X_X"]
      }
      
  2. Use library functions in your source file.

    • use methods of the parent structure (TmuxCommand):

      use tmux_interface::TmuxCommand;
      
      let tmux = TmuxCommand::new();
      
      tmux.new_session()
          .detached()
          .session_name("example_1")
          .output()
          .unwrap();
      tmux.has_session()
          .target_session("example_1")
          .output()
          .unwrap();
      tmux.kill_session()
          .target_session("example_1")
          .output()
          .unwrap();
      
    • use direct methods of the child structures (NewSession, HasSession, KillSession, ...):

      use tmux_interface::{HasSession, KillSession, NewSession};
      
      NewSession::new()
          .detached()
          .session_name("example_2")
          .output()
          .unwrap();
      HasSession::new()
          .target_session("example_2")
          .output()
          .unwrap();
      KillSession::new()
          .target_session("example_2")
          .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.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

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].