termrun

Send & run commands on other open Unix terminals

Usage

shell $ termrun [--newline] [--all|--pty /dev/pty/N] cmd

Note: Requires sudo each time unless root is set as owner. See Privileges section below

Simple example

Open terminal 1: shell $ tty /dev/pts/2

Open terminal 2: shell $ termrun --newline --pty /dev/pts/2 echo hello world

--newline appends \n to the sent command to actually run

Displayed in open terminal 1: shell $ tty /dev/pts/2 $ echo hello world hello world

Reload all terminals example

shell $ vim ~/.zshrc # make config changes $ termrun --newline --all source ~/.zshrc

Install

Cargo

If you're using a recent version of Cargo, you can see the cargo install command:

shell $ cargo install termrun

Build from source

After git cloning this repo, you can install as a cargo crate through

shell $ cargo install --path path/to/repo

This should make termrun available everywhere assuming your cargo crates are in $PATH

Privileges / Post-installation

termrun uses ioctl(2) under the hood through the TIOCSTI cmd flag. To do this successfully, the process needs root user privileges to run.

In practice, this means having to run termrun with sudo. By default when you install global crates, sudo doesn't know about them:

```shell $ termrun Error: EPERM: Operation not permitted

$ sudo termrun [sudo] password for user: sudo: termrun: command not found ```

The solutions here are to:

License

MIT - Maintained by Milan