Bộ ghép kênh đầu cuối có bất kỳ lợi ích nào khi được sử dụng với trình quản lý cửa sổ ốp lát không?


11

Cả bộ ghép kênh đầu cuối (màn hình, tmux) và trình quản lý cửa sổ ốp lát điều khiển bằng bàn phím (ratpoison, dwm, xmonad) đều cung cấp chức năng tương tự. Có bất kỳ lợi ích trong việc sử dụng cả hai cùng một lúc? Những vấn đề có thể phát sinh?


1
Họ làm? Tính năng duy nhất tôi có thể nghĩ về sự trùng lặp đó là khả năng chia một cửa sổ thành nhiều
Michael Mrozek

@MichaelMrozek Tôi có 0 kinh nghiệm với một trong số họ vì vậy tôi chỉ đọc một số thứ tôi đã đọc. Sẽ thật tuyệt nếu bạn có thể chỉ ra một số khác biệt.
Pubby

3
Xin lưu ý rằng đối với người quản lý cửa sổ, mọi cửa sổ chỉ là một cửa sổ - và đó là về nó. Do đó, rất nhiều thứ liên quan đến thiết bị đầu cuối ngoài việc tách cửa sổ không có sẵn cho WM.
sr_

Câu trả lời:


9

Tôi sử dụng dwm và tmux. Trước khi học cách sử dụng tmux, tôi sẽ mở nhiều thiết bị đầu cuối cho những thứ khác nhau và đặt chúng trong các thẻ khác nhau. Bây giờ tôi có thể chạy mọi thứ bên trong một phiên tmux, dưới một thẻ duy nhất và có thể tách ra và gắn lại mà không mất trạng thái nếu tôi cần khởi động lại X.


16

Lợi ích bổ sung của bộ ghép kênh đầu cuối là các phiên của bộ ghép kênh của bạn vẫn còn tồn tại và bạn có thể kết nối lại với chúng ngay cả khi X (phiên máy tính để bàn của bạn) gặp sự cố hoặc bạn đã đăng xuất khỏi X.


2

Sử dụng cả hai: Trình quản lý cửa sổ ốp lát và bộ ghép kênh đầu cuối.

Kết hợp cả khả năng và lợi thế của họ để có được một sức mạnh tổng hợp thậm chí tốt hơn. Trong thiết lập i3 của tôi, tôi thường xuyên hiển thị một số thiết bị đầu cuối cùng một lúc, nhưng tất cả chúng đều được kết nối với cùng một phiên tmux , vì vậy tôi có thể hiển thị tất cả các cửa sổ tmux trong bất kỳ thiết bị đầu cuối nào .

Trên thực tế, tôi sử dụng các khả năng ốp lát i3để thay thế / tăng cường chức năng tách / di chuyển cửa sổ của bộ ghép kênh đầu cuối để (imho) đạt được kết quả tốt nhất của cả hai thế giới.

Kịch bản dưới đây được sử dụng ở đây để quản lý kết nối phiên / phát hiện và dọn dẹp khi khởi động thiết bị đầu cuối:

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

Không. Trong những trường hợp hiếm hoi mà màn hình bên trong màn hình hoặc tmux bên trong tmux là hữu ích, cả hai chương trình đều cung cấp một phương tiện đơn giản để chuyển điều khiển sang thể hiện lồng nhau.

Màn hình cung cấp các khả năng của bàn điều khiển nối tiếp, nhưng tôi chỉ sử dụng một ứng dụng chuyên dụng (miniterm.py được phân phối với python) khi tôi cần. Mặt khác, tôi không thể nghĩ ra bất cứ điều gì có thể làm được và người kia không thể làm được, nhưng người này có thể làm điều đó đơn giản hơn người khác.

Tôi sẽ học cái này hay cái khác, và nếu bạn tò mò hoặc không hài lòng với những gì bạn đã chọn, hãy thử cái khác. Tôi thích tmux, cá nhân.


0

Một khía cạnh hữu ích khác của bộ ghép kênh đầu cuối trong kịch bản này là sau khi kết nối với các máy chủ từ xa. Một trường hợp sử dụng điển hình tôi tìm thấy là

  1. Mở một cửa sổ đầu cuối trên máy tính cục bộ của tôi.
  2. ssh vào một máy chủ từ xa.
  3. tmux / screen hiện cung cấp ghép kênh trên máy chủ từ xa, cho phép dễ dàng mở các thiết bị đầu cuối / shell mới trên máy chủ từ xa. So với việc mở một thiết bị đầu cuối thứ hai trên máy tính cục bộ và kết nối lại với một ssh thứ hai, đây là một bước ít hơn.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.