如果每次启动新的Shell会话时都激活tmux,则“右键单击>在终端中打开”不起作用

时间:2020-07-29 20:17:23

标签: bash zsh tmux linux-mint

我正在使用Linux Mint 20 Ulyana,Cinnamon 4.6.6

每次启动新的Shell会话时,我都会使用以下代码激活tmux。

function tmux-as-default-terminal () {

  if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]]  && [ -z "$TMUX" ]; then
    tmux attach -t default || tmux new -s default
  fi

}

tmux-as-default-terminal

但是,它有一个小问题。当我右键单击目录并单击“在终端中打开”时,它不会打开该路径。相反,它只是打开上一个tmux会话。

在这里可以做什么?

更新1

我发现tmux new-session -c $PWD在当前目录中打开一个新的tmux会话。

tmux attach -t 0 -c $PWD \; new-window \;附加到现有会话,并使用当前目录打开一个新窗口。

这些信息对于解决这个难题可能很重要。

更新2

Is it possible to send input to a tmux session without connecting to it?我发现我可以使用

$ tmux new -d -s mySession
$ tmux send-keys -t mySession.0 "^U"
$ tmux send-keys -t mySession.0 "cd /tmp" ENTER
$ tmux a -t mySession

cd到当前会话中的目录。

更新3

附加了一些字符串的解决方案

function tmux-as-default-terminal () {

  if command -v tmux &> /dev/null && [ -n "$PS1" ] && [[ ! "$TERM" =~ screen ]] && [[ ! "$TERM" =~ tmux ]]  && [ -z "$TMUX" ]
  then

    if tmux has-session -t default
    then
        tmux send-keys -t default.0 "^U"
        tmux send-keys -t default.0 "cd $PWD &> /dev/null" ENTER
        tmux send-keys -t default.0 "^L"
        tmux attach-session -t default.0
    else
        tmux new-session -s default -c $PWD
    fi
  fi

}

tmux-as-default-terminal

只要我不要同时打开多个终端,它就可以工作。

1 个答案:

答案 0 :(得分:0)

在这里OP。对于每个tmux客户端,它将创建一个新会话。

-----------------------------------------------------
organisation_id | organisation_name   |   num_cards |
-----------------------------------------------------
   1            | Luxury Bus Services | 1           
   2            | Power tools         | --   
   3            | Test test           | 5                   

默认情况下,您将附加到哪个tmux会话,具体取决于打开了多少个客户端。