바둑판 식 배열 창 관리자와 함께 사용하면 터미널 멀티플렉서에 어떤 이점이 있습니까?


11

터미널 멀티플렉서 (screen, tmux)와 키보드 방식의 타일링 윈도우 관리자 (ratpoison, dwm, xmonad)는 비슷한 기능을 제공합니다. 두 가지를 동시에 사용하면 어떤 이점이 있습니까? 발생할 수있는 문제는 어떻습니까?


1
그들이하다? 내가 겹쳐서 생각할 수있는 유일한 기능은 창을 여러 개로 분할하는 기능입니다.
Michael Mrozek

@MichaelMrozek 나는 그들 중 하나에 대한 경험이 없으므로 내가 읽은 것들을 가고 있습니다. 차이점을 지적 할 수 있다면 좋을 것입니다.
Pubby

3
창 관리자의 경우 모든 창은 창 일뿐 입니다. 따라서 WM에서는 창 분할 외에 많은 터미널 관련 항목을 사용할 수 없습니다.
sr_

답변:


9

dwm과 tmux를 사용합니다. tmux 사용법을 배우기 전에 여러 가지에 대해 여러 터미널을 열고 다른 태그로 만들었습니다. 이제 하나의 tmux 세션 내에서 단일 태그로 모든 것을 실행할 수 있으며 X를 다시 시작해야 할 경우 상태를 잃지 않고 분리하고 다시 연결할 수 있습니다.


16

터미널 멀티플렉서의 또 다른 이점은 멀티플렉서 세션이 계속 활성 상태이고 X (데스크탑 세션)가 충돌하거나 X에서 로그 아웃 한 경우에도 다시 연결할 수 있다는 것입니다.


2

타일링 창 관리자와 터미널 멀티플렉서를 모두 사용하십시오.

그들의 기능과 장점을 결합하여 더 나은 시너지를 얻으십시오. i3 설정에서 정기적으로 여러 터미널 을 동시에 표시 하지만 모두 동일한 tmux 세션에 연결되어 있으므로 모든 터미널에서 모든 tmux 창을 표시 할 수 있습니다 .

실제로, i3터미널 멀티플렉서의 창 분할 / 이동 기능을 두 세계를 최대한 활용하도록 (imho) 대체 / 확장 하기위한 타일링 기능을 사용합니다 .

아래 스크립트는 터미널 시작시 세션 / 탐지 연결 및 정리를 관리하는 데 사용됩니다.

#!/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

아니요. 화면 내부의 화면 또는 tmux 내부의 tmux가 유용한 드문 경우에 두 프로그램 모두 중첩 된 인스턴스에 제어를 전달하는 간단한 수단을 제공합니다.

화면은 직렬 콘솔 기능을 제공하지만 필요할 때 전용 앱 (python과 함께 배포 된 miniterm.py)을 사용합니다. 그렇지 않으면 나는 할 수 있고 다른 것은 할 수없는 손해를 생각할 수 없지만, 하나는 다른 것보다 간단 할 수 있습니다.

나는 하나 또는 다른 것을 배우고, 당신이 선택한 것에 대해 호기심이 있거나 불만족한다면, 다른 것을 시도하십시오. 개인적으로 tmux를 선호합니다.


0

이 시나리오에서 터미널 멀티플렉서의 또 다른 유용한 측면은 원격 서버에 연결 한 후입니다. 내가 찾은 일반적인 사용 사례는

  1. 로컬 PC에서 터미널 창을 엽니 다.
  2. 원격 서버로 ssh.
  3. tmux / screen은 이제 원격 서버에서 멀티플렉싱을 제공하여 원격 서버에서 새로운 터미널 / 쉘을 쉽게 열 수 있습니다. 로컬 PC에서 두 번째 터미널을 열고 두 번째 ssh와 다시 연결하는 것과 비교할 때, 이것은 한 단계 적습니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.