warpdotdev / Warp

Warp is a modern, Rust-based terminal with AI built in so you and your team can build great software, faster.
https://warp.dev
Other
21.43k stars 374 forks source link

Support blocks feature for trzsz-ssh ( tssh ) in search mode #3960

Closed lonnywong closed 4 months ago

lonnywong commented 11 months ago

Discord username (optional)

No response

Describe the solution you'd like?

In the shell function is_interactive_ssh_session, change [[ ${#ARGS[@]} -ne 1 ]] to [[ ${#ARGS[@]} -ne 1 ]] && [[ $(command ssh -V 2>&1) != "trzsz ssh"* ]]:

is_interactive_ssh_session () {
    ARGS=()
    # ...
    if [[ ${#ARGS[@]} -ne 1 ]] && [[ $(command ssh -V 2>&1) != "trzsz ssh"* ]]
    then
        return 1
    fi
}

In the shell function warp_ssh_helper, using -oRemoteCommand instead. change command ssh -o ControlMaster=yes -o ControlPath=$SSH_SOCKET_DIR/$WARP_SESSION_ID -t "${@:1}" "..." to:

warp_ssh_helper () {
command ssh -o ControlMaster=yes -o ControlPath=$SSH_SOCKET_DIR/$WARP_SESSION_ID -t -oRemoteCommand="
export TERM_PROGRAM='WarpTerminal'
# ...
" "${@:1}"
}

Is your feature request related to a problem? Please describe.

trzsz-ssh ( tssh ) supports the Warp blocks feature if ssh login directly. But it's not working in tssh search mode.

Steps to reproduce:

brew install trzsz-ssh
sudo ln -sv $(which tssh) /usr/local/bin/ssh

# It works if ssh login directly
ssh server

#  It's not working in search mode. tssh will enter search mode without any argument.
ssh

# It works with an argument. e.g., there's a server alias in `~/.ssh/config` contains `s`:
ssh s

Additional context

How important is this feature to you?

3

Warp Internal (ignore) - linear-label:770f6576-d6c0-4e4f-a259-fc64b5156087

None

dannyneira commented 11 months ago

Hi @lonnywong Thanks for submitting such a details feature request!

To anyone else interested in this feature, please add a :+1: to the original post at the top to signal that you want this feature, and subscribe if you'd like to be notified.

drag0n-app commented 10 months ago

+1

zlsq commented 9 months ago

+1

paststrange commented 8 months ago

+1

00arthur00 commented 8 months ago

+1

fisherwei commented 7 months ago

+1

SunDaydream commented 7 months ago

+1

gaoxiang0421 commented 7 months ago

+1

mozhu811 commented 6 months ago

+1

fmyhappy commented 6 months ago

+1

fitzf commented 4 months ago

+1

lonnywong commented 4 months ago

I figured out another way to support blocks feature in trzsz-ssh ( tssh ) search mode.

  1. Install as follows ( ssh -V should show trzsz ssh 0.1.22 ):

    brew update
    brew install trzsz-ssh
    sudo rm /usr/local/bin/ssh
    sudo ln -sv ~/go/bin/tssh /usr/local/bin/ssh
  2. Add the following shell function definition in your .bash_profile ( bash ) or .zshrc ( zsh ):

    tssh() {
        if [ $# -eq 0 ]; then
            ssh FAKE_DEST_IN_WARP
        else
            ssh "$@"
        fi
    }
  3. Restart Warp and run tssh (without arguments). You will be able to search servers to log in to, and the Warp blocks feature should be supported.

中文请参考:https://github.com/trzsz/trzsz-ssh/issues/99#issuecomment-2212898874