ターミナルマルチプレクサーをタイリングウィンドウマネージャーと一緒に使用すると、何か利点がありますか?


11

端末マルチプレクサー(画面、tmux)とキーボード駆動のタイリングウィンドウマネージャー(ratpoison、dwm、xmonad)の両方が同様の機能を提供します。両方を同時に使用するメリットはありますか?発生する可能性のある問題についてはどうですか?


1
彼らはしますか?私はその重複考えることができる唯一の機能は、多くの中にウィンドウを分割する機能です
マイケルMrozek

@MichaelMrozek私はそれらのどちらかで0の経験があるので、私は私が読んだいくつかのものに行くつもりです。いくつかの違いを指摘していただければ幸いです。
Pubby

3
ウィンドウマネージャにとって、すべてのウィンドウは単なるウィンドウであることに注意してください-それはそれだけです。したがって、ウィンドウ分割以外の多くの端末関連の機能は、WMでは利用できません。
sr_

回答:


9

私はdwmとtmuxを使用しています。tmuxの使い方を学ぶ前に、さまざまな目的で複数のターミナルを開いて、それらをさまざまなタグに含めます。これで、1つのtmuxセッション内のすべてを1つのタグの下で実行できるようになり、Xを再起動する必要がある場合は、状態を失うことなく切り離して再接続できます。


16

端末マルチプレクサの追加の利点は、X(デスクトップセッション)がクラッシュしたり、Xからログアウトした場合でも、マルチプレクサセッションは存続し、それらに再接続できることです。


2

両方を使用:タイリングウィンドウマネージャーとターミナルマルチプレクサー。

それらの機能と利点の両方を組み合わせて、さらに優れた相乗効果を得ます。私のi3セットアップでは、定期的にいくつかの端末を同時に表示しますが、それらすべてが同じtmuxセッションに接続されているため、すべてのtmuxウィンドウを任意の端末に表示できます。

実際、私はのタイリング機能を使用してi3、ターミナルマルチプレクサーのウィンドウ分割/移動機能を置き換え/拡張し、(私見)両方の世界のベストを獲得します。

以下のスクリプトは、セッション/検出接続を管理し、端末の起動時にクリーンアップするために使用されます。

#!/bin/bash
# This script attaches the terminal to a common session, where all
# terminals can show any window of the main tmux session independently
# This script also cleans up "old" sessions
# Todo: Cosmetic fix-ups. Make less verbose.

DEBUG="y"
showRun(){ echo Will run: $@;test -z $DEBUG||read -n1 -p"Press ENTER";$@; }

SNAME=${1:-XyZ}

if ! tmux has -t $SNAME; then
    echo -n "Session $SNAME not found, creating it: "
    showRun exec tmux new-session -s $SNAME;
else
    echo -n "Session $SNAME found: "
    MySESSION=$(tmux ls | grep -E "^$SNAME:.*\(attached\)$")
    echo $MySESSION;
    if [ -z "$MySESSION" ] ; then
        echo "Session $SNAME unattached, seizing it:"
        showRun exec tmux attach -t $SNAME \; new-window
    else
        echo "Session $SNAME already attached, finding grouped Sessions:"
        REGEX="group ([^)]*)"
        [[ $MySESSION =~ $REGEX ]]
        GNAME=${BASH_REMATCH[1]}
        GSESSIONS=$(tmux ls | grep "group $GNAME)" | grep -v $SNAME:)
        echo "$GSESSIONS"
        if [ -z "$GSESSIONS" ]; then
            echo "No sessions in group with $SNAME found, creating new one:"
            showRun exec tmux new-session -t $SNAME \; new-window
        else
            FGSESSIONS=$(echo "$GSESSIONS" | grep -v attached )
            if [ -z "$FGSESSIONS" ]; then
                echo "No free sessions in group $GNAME found, creating new one:"
                showRun exec tmux new-session -t $SNAME \; new-window
            else
                echo -e "Free grouped Sessions:\n $FGSESSIONS";
                if echo "$FGSESSIONS" | tail -n +2 | grep . > /dev/null; then
                    echo "Several detached Sessions found, cleaning up:"
                    echo "$FGSESSIONS" | while read SID x ; do
                        if [ -z $KEEPSID ]; then
                            KEEPSID=${SID%:*};
                            echo "Keeping session $KEEPSID for takeover after cleanup"
                        else
                            echo "Cleaning up old detached session $SID"
                            tmux kill-session -t ${SID%:}
                        fi;
                    done
                    KEEPSID=$(tmux ls|grep "group $GNAME)" | grep -v attached);
                    KEEPSID=${KEEPSID%: *}
                    echo "Attaching to session $KEEPSID:"
                    showRun exec tmux attach -t $KEEPSID \; new-window
                else
                    echo "Free session ( ${FGSESSIONS%: *} ) found, seizing it:"
                    showRun exec tmux attach -t ${FGSESSIONS%: *} \; new-window
                fi ;
            fi ;
        fi ;
    fi ;
fi

1

いいえ。screen内のscreenまたはtmux内のtmuxが役立つというまれなケースでは、どちらのプログラムもネストされたインスタンスに制御を渡す簡単な方法を提供します。

Screenはシリアルコンソール機能を提供しますが、必要な場合は専用アプリ(pythonで配布されたminiterm.py)を使用します。さもなければ、私はどちらかができることと他ができないことを手に負えないことを考えることはできませんが、一方が他方より簡単にするかもしれません。

私はどちらか一方を学びます、そしてあなたが好奇心を持っているか、あなたが選んだものに不満があるなら、もう一方を試してください。私は個人的にはtmuxを好みます。


0

このシナリオでのターミナルマルチプレクサーのもう1つの便利な側面は、リモートサーバーに接続した後です。私が見つける典型的なユースケースは

  1. ローカルPCでターミナルウィンドウを開きます。
  2. リモートサーバーにsshでログインします。
  3. tmux / screenは、リモートサーバーでの多重化を提供するようになり、リモートサーバーで新しいターミナル/シェルを簡単に開くことができるようになりました。ローカルPCで2番目の端末を開いて2番目のSSHで再接続する場合と比較すると、これは1ステップ少ないです。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.