Bir döşeme çoklayıcısının döşeme penceresi yöneticisi ile kullanıldığında herhangi bir faydası var mı?


11

Hem terminal çoklayıcılar (ekran, tmux) hem de klavye ile çalışan döşeme penceresi yöneticileri (ratpoison, dwm, xmonad) benzer işlevsellik sağlar. Her ikisini aynı anda kullanmanın herhangi bir faydası var mı? Ortaya çıkabilecek problemler ne olacak?


1
Onlar yapar? Örtüşmeler hakkında düşünebildiğim tek özellik, bir pencereyi birçok kişiye bölme yeteneğidir
Michael Mrozek

@MichaelMrozek Her ikisiyle de 0 deneyimim var, bu yüzden okuduğum bazı şeylere gidiyorum. Bazı farklılıkları göstermeniz harika olurdu.
Pubby

3
Bir pencere yöneticisi için her pencerenin sadece bir pencere olduğunu ve bununla ilgili olduğunu unutmayın. Bu nedenle, pencere bölme dışında terminalle ilgili birçok şey WM için kullanılamaz.
sr_

Yanıtlar:


9

Ben dwm ve tmux kullanıyorum. Tmux kullanmayı öğrenmeden önce, farklı şeylere açık birden fazla terminalim olacak ve bunları farklı etiketlerde kullanacaktım. Şimdi her şeyi tek bir etiket altında tek bir tmux oturumu içinde çalıştırabilirim ve X'i yeniden başlatmam gerekirse durumu kaybetmeden söküp yeniden bağlayabilirim.


16

Terminal çoklayıcıların ek yararı, çoklayıcı oturumlarınızın hala hayatta kalması ve X (masaüstü oturumunuz) çökse veya X oturumunu kapatmış olsanız bile bunlara yeniden bağlanabilmenizdir.


2

Her ikisini de kullanın: Bir döşeme penceresi yöneticisi ve bir terminal çoklayıcı.

Daha da iyi bir sinerji elde etmek için yeteneklerini ve avantajlarını birleştirin. İ3 kurulumumda düzenli olarak aynı anda birkaç terminal görüntülüyorum , ancak hepsi aynı tmux oturumuna bağlı , böylece tüm tmux pencerelerini herhangi bir terminalde görüntüleyebiliyorum .

Aslında i3, terminal çoğullayıcının (imho) her iki dünyanın en iyisini elde etmek için pencere bölme / taşıma işlevselliğini değiştirmek / artırmak için döşeme özelliklerini kullanıyorum .

Aşağıdaki komut dosyası, oturum açma / algılama bağlantısını ve terminal başlangıcında temizlemeyi yönetmek için kullanılır:

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

Hayır. Ekranın içindeki ekranın veya tmux'un içindeki tmux'un faydalı olduğu nadir durumlarda, her iki program da iç içe geçmiş örneğe kontrolü aktarmak için basit bir yol sağlar.

Ekran seri konsol yetenekleri sunuyor, ancak ihtiyacım olduğunda sadece özel bir uygulama (python ile dağıtılan miniterm.py) kullanıyorum. Aksi takdirde, elinden gelenin diğerinin yapamayacağı bir şey düşünemiyorum, ama biri diğerinden daha basit yapabilir.

Birini ya da diğerini öğrenirdim ve seçtiğiniz şeyden meraklı ya da memnun değilseniz, diğerini deneyin. Ben şahsen tmux'u tercih ederim.


0

Bu senaryoda terminal çoklayıcısının bir başka yararlı yönü uzak sunuculara bağlandıktan sonradır. Bulduğum tipik bir kullanım örneği

  1. Yerel bilgisayarımda bir terminal penceresi aç.
  2. uzak bir sunucuya ssh.
  3. tmux / screen artık uzak sunucuda çoklama sağlıyor ve uzak sunucuda yeni terminallerin / kabukların kolayca açılmasını sağlıyor. Yerel bilgisayarda ikinci bir terminalin açılması ve ikinci bir ssh ile yeniden bağlanması ile karşılaştırıldığında, bu daha az bir adımdır.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.