Nautilus:使用 tmux 时在终端中打开文件夹

Nautilus:使用 tmux 时在终端中打开文件夹

我使用的是 fedora 25 gnome 版本,zsh shell。我可以右键单击,在终端中打开文件夹。我将 gnome 终端配置为在打开时启动 tmux。

现在,如果我在终端中打开文件夹,终端将打开默认用户目录,而不是我所在的实际目录。如何修复它?

在此输入图像描述

我需要将附加参数传递给 gnome-terminal 中的 tmux 或 Nautilus。

如果这适用于其他文件管理器,请告诉我,我会考虑切换的可能性,但如果可以使用 Nautilus 来完成,那就更好了。

答案1

我已经有一段时间没有使用 Linux 作为我的主要驱动程序了,但是曾经有一个程序nautilus-open-terminal可以执行此操作,但不确定 Fedora 是否支持它。另外,虽然我不知道是否可以在非 Ubuntu/Debian 系统上安装它,但 Canonical 的 Unity DE 内置了此功能,您可能可以复制 Gnome 中使用的方法。

编辑:根据您的评论,您可以将行添加到您的.profile始终在 gnome-terminal 的当前工作目录中打开 tmux 作为否认的进程(即tmux ./; disown -r && killall gnome-terminal),这样当您右键单击并在目录中打开终端时,它会打开一个 gnome -terminal,并立即打开一个独立的 tmux 窗口,传递 nautilus 收到的工作目录作为参数。

更新:好的,我找到了两种方法。现在,每一个都有自己的问题,但希望其中一个对您来说足够好。这些方法在 Debian 8.7 安装上进行了测试,使用 Bash 作为 shell 和nautilus-open-terminal在当前 Nautilus/Nemo 目录中启动终端窗口的程序。

方法 1.) 只需添加tmux到文件的最后.bashrc(或在您的情况下.zshrc)。现在,您打开的任何终端窗口都会立即将 tmux 作为工作目录中的进程打开。

这种方法的优点是简单,只打开一个窗口。

此方法的主要缺点是它将始终作为当前 shell 中的嵌套进程运行,因此如果这是一个问题,您可能需要使用其他方法。

方法 2.) 将这一行gnome-terminal -e tmux ./(这次进程名称周围没有引号)添加到您的.bashrc.zshrc文件中。这将打开一个新的终端窗口,其中包含 tmux 作为主进程。

此方法的优点是 tmux 窗口将是一个独立的进程,并且仍将打开并将当前工作目录设置为 Nautilus/Nemo 窗口的目录。

缺点是,虽然它打开了 tmux 专用窗口,但exit无法添加到.bashrc文件中,否则它也会杀死 tmux 窗口。话虽如此,用于生成 tmux 窗口的 gnome 终端仍然可以通过单击x窗口上的 来手动关闭,或者exit在 tmux 打开后直接在 gnome 终端中运行。

而第二种方法则不太方便,需要手动关闭多余的终端窗口;Open In Terminal单击上下文菜单选项时,它将在当前目录中打开一个专用的 tmux 窗口。

答案2

我已经添加了:

# Start tmux if tmux is not already running
pgrep tmux >/dev/null 2>&1 || exec tmux

在我的 .bashrc 的末尾,在我看来一切都工作正常。当我手动启动 gnome 终端(第一次)时,tmux 启动。如果我打开其他终端,它们将没有 tmux(这正是我想要的)。从 Nautilus 中的任何文件夹打开终端(使用“在终端中打开”)也可以按预期工作。

答案3

通过TMUX环境变量,我们可以exit在退出 tmux 会话时自动终止原始终端。

if [[ "$TMUX" == "" ]]  # if not on tmux
then
    tmux
    exit
fi

它还可以防止在 tmux 会话中sessions should be nested with care, unset $TMUX to force调用引起的“”消息。tmux

相关内容