Skip to content

Latest commit

 

History

25 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ezet

English · 한국어

An interactive CLI for picking SSH · Eternal Terminal · tmux hosts and sessions. Pure Bash, and it falls back to plain SSH whenever ET is unavailable.

  • tmux session management — list, create and rename remote sessions, then attach right away.
  • Auto-reconnect — prefers Eternal Terminal (ET), so sessions survive a closed laptop lid or a network change.
  • SSH fallback — hosts without ET, or without a usable tmux, are reached over plain SSH.

test License: MIT

Screens

Hosts and tmux sessions are picked from the same dashboard.

Host picker:

host picker screen

Narrowing the list with search:

host search screen

Session picker:

tmux session picker screen

Adding a host:

add host screen

Install

brew install zoo3323/tap/ezet

or:

curl -fsSL https://raw.githubusercontent.com/zoo3323/ezet/main/install.sh | bash

For ET auto-reconnect, install et locally and etserver on the remote host. Without them ezet still connects over SSH.

Usage

ezet                 # pick a host
ezet <host>          # pick a session
ezet <host> <name>   # connect to a session directly
ezet --doctor        # check the setup
ezet --version

Move with the arrow keys and pick with Enter. The host screen adds, edits, deletes and reorders hosts; the session screen attaches or creates tmux sessions, or connects without tmux through the SSH Direct row. q quits and goes back to the previous screen.

In the add and edit forms, Enter accepts the shown default, < steps back to the previous field and q cancels.

Requirements

  • Bash 3.2+
  • OpenSSH (ssh)
  • Eternal Terminal (et, optional)
  • Remote tmux (optional; without it ezet connects through SSH Direct)

A local tmux is not needed.

Platforms

ezet runs on macOS and Linux (WSL included, since it reports itself as Linux). Both are covered by the CI matrix on every push.

It does not run on Windows natively: --doctor rejects Git Bash/MSYS2, because the Include line ezet writes uses an MSYS path (/c/Users/...) that Windows OpenSSH cannot resolve. Use WSL there.

A Windows host on the remote side is supported. Its shell is not POSIX, so the tmux query cannot run; ezet detects that, reports non-POSIX shell (e.g. Windows) and offers the SSH Direct row to connect without tmux. This path is covered by the test suite with a stub that reproduces the real cmd.exe behaviour (it runs only the first line of a multi-line command and still exits 0).

SSH config

ezet hosts live in ~/.ssh/config.d/ezet. Your existing config only gains a single Include line, and it is backed up before the change. ET ports are stored as a comment:

Host host-ext
    HostName 203.0.113.10
    User user
    Port 30001
    # ezet: et-port 30002

ezet --uninstall removes only the Include line ezet added.

Development

make test    # regression tests (bash -n, shellcheck, expect)
make docs    # regenerate the README screenshots from the real TUI

make docs drives the actual TUI with expect against a fixed fixture and converts the captured terminal output to SVG, so the screenshots cannot drift from the UI.

License

MIT

About

Interactive bash CLI to pick, connect and manage remote tmux sessions over SSH and Eternal Terminal

Topics

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages