Nautilus:tmuxを使用するときに端末でフォルダを開く

Nautilus:tmuxを使用するときに端末でフォルダを開く

私はfedora 25 gnomeバージョン、zshシェルを使用しています。端末を右クリックしてフォルダを開くことができます。 tmuxが開いたときにtmuxを起動するようにgnome端末を設定しました。

ターミナルでフォルダを開くと、ターミナルは現在存在する物理ディレクトリの代わりにデフォルトのユーザーディレクトリを開きます。どうすれば修正できますか?

ここに画像の説明を入力してください。

gnome-terminalのtmuxまたはNautilusに追加のパラメータを渡す必要があります。

これが他のファイルマネージャでも機能する場合は、お知らせください。切り替えの可能性を考えてみましょう。しかし、Nautilusを使って行うことができれば、より良いでしょう。

答え1

Linuxをネイティブドライバーとして使用したかどうかはかなりですが、これを実行できるプログラムがありましたが、nautilus-open-terminalFedoraがそれをサポートしているかどうかはわかりません。また、Ubuntu / Debianシステムではなくシステムにインストールできるかどうかはわかりませんが、CanonicalのUnity DEにはこの機能が組み込まれており、おそらくGnomeで使用されている方法を複製できます。

.profile編集:あなたのコメントに応じて、gnome-terminalの現在の作業ディレクトリにある常に開いているtmuxに拒否されたプロセス(たとえば)で行を追加して、ディレクトリ内の端末を右クリックして開くtmux ./; disown -r && killall gnome-terminalことができます。 gnome -terminalを実行し、ただちに別のtmuxウィンドウを開き、ノーチラスが受け取った作業ディレクトリを引数として渡します。

アップデート:いいですね。 2つの方法を見つけました。それぞれに固有の問題がありますが、これらのうちの1つがあなたに十分であることを願っています。これらの方法は、Bashをシェルとして使用し、nautilus-open-terminal現在Nautilus / Nemoディレクトリからターミナルウィンドウを起動するプログラムを使用してDebian 8.7インストールでテストされています。

方法1.)tmuxファイルの末尾に.bashrc(またはあなたの場合.zshrc)追加します。これで、開こうとしているすべてのターミナルウィンドウはすぐに作業ディレクトリのプロセスとしてtmuxを開きます。

この方法の利点は、シンプルでウィンドウを1つだけ開くことができることです。

この方法の最大の欠点は、現在のシェルで常にネストされたプロセスで実行されるため、これが問題になった場合は別の方法を使用する必要があることです。

方法2.)gnome-terminal -e tmux ./この行(今回はプロセス名を引用符なし)を.bashrcファイル.zshrcに追加します。これにより、tmuxがデフォルトプロセスとして含まれている新しいターミナルウィンドウが開きます。

この方法の利点は、tmuxウィンドウが別のプロセスであり、まだ開いており、現在の作業ディレクトリであるNautilus / Nemoウィンドウディレクトリに設定されていることです。

欠点は、tmux特定のウィンドウを開く間にファイルexitに追加できないこと、または.bashrctmuxウィンドウも終了することです。ただし、tmuxウィンドウを作成するために使用されたgnome端末はウィンドウをxクリックして手動で閉じたり、exittmuxが開いた後にgnome端末で直接実行することもできます。

2番目の方法はあまり便利ではなく、冗長ターミナルウィンドウを手動で閉じる必要があります。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環境変数を使用してexittmuxセッションを終了すると、元の端末を自動的に終了できます。

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

また、tmuxセッション内sessions should be nested with care, unset $TMUX to forceの呼び出しによって引き起こされるメッセージを防止します。tmux

関連情報