터미널 멀티플렉서 (screen, tmux)와 키보드 방식의 타일링 윈도우 관리자 (ratpoison, dwm, xmonad)는 비슷한 기능을 제공합니다. 두 가지를 동시에 사용하면 어떤 이점이 있습니까? 발생할 수있는 문제는 어떻습니까?
터미널 멀티플렉서 (screen, tmux)와 키보드 방식의 타일링 윈도우 관리자 (ratpoison, dwm, xmonad)는 비슷한 기능을 제공합니다. 두 가지를 동시에 사용하면 어떤 이점이 있습니까? 발생할 수있는 문제는 어떻습니까?
답변:
타일링 창 관리자와 터미널 멀티플렉서를 모두 사용하십시오.
그들의 기능과 장점을 결합하여 더 나은 시너지를 얻으십시오. 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
아니요. 화면 내부의 화면 또는 tmux 내부의 tmux가 유용한 드문 경우에 두 프로그램 모두 중첩 된 인스턴스에 제어를 전달하는 간단한 수단을 제공합니다.
화면은 직렬 콘솔 기능을 제공하지만 필요할 때 전용 앱 (python과 함께 배포 된 miniterm.py)을 사용합니다. 그렇지 않으면 나는 할 수 있고 다른 것은 할 수없는 손해를 생각할 수 없지만, 하나는 다른 것보다 간단 할 수 있습니다.
나는 하나 또는 다른 것을 배우고, 당신이 선택한 것에 대해 호기심이 있거나 불만족한다면, 다른 것을 시도하십시오. 개인적으로 tmux를 선호합니다.
이 시나리오에서 터미널 멀티플렉서의 또 다른 유용한 측면은 원격 서버에 연결 한 후입니다. 내가 찾은 일반적인 사용 사례는