दोनों टर्मिनल मल्टीप्लेक्सर्स (स्क्रीन, tmux) और कीबोर्ड-चालित टाइलिंग विंडो मैनेजर (रैटपोइसन, dwm, xmonad) समान कार्यक्षमता प्रदान करते हैं। क्या एक ही समय में दोनों का उपयोग करने में कोई लाभ है? समस्याओं के बारे में क्या हो सकता है?
दोनों टर्मिनल मल्टीप्लेक्सर्स (स्क्रीन, tmux) और कीबोर्ड-चालित टाइलिंग विंडो मैनेजर (रैटपोइसन, dwm, xmonad) समान कार्यक्षमता प्रदान करते हैं। क्या एक ही समय में दोनों का उपयोग करने में कोई लाभ है? समस्याओं के बारे में क्या हो सकता है?
जवाबों:
मैं dwm और tmux का उपयोग करता हूं। Tmux का उपयोग करना सीखने से पहले, मेरे पास अलग-अलग चीज़ों के लिए कई टर्मिनल होंगे, और उन्हें अलग-अलग टैग में रखना होगा। अब मैं एक ही टैग के तहत एक tmux सेशन के अंदर सब कुछ चला सकता हूं, और अगर मुझे X को पुनरारंभ करने की आवश्यकता है, तो राज्य को खोए बिना अलग कर सकता हूं और फिर से शुरू कर सकता हूं।
दोनों का उपयोग करें: एक टाइलिंग विंडो मैनेजर और एक टर्मिनल मल्टीप्लेक्सर।
एक बेहतर तालमेल प्राप्त करने के लिए उनकी क्षमताओं और लाभों दोनों को मिलाएं। अपने 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 उपयोगी है, दोनों प्रोग्राम नेस्टेड इंस्टेंस को पास करने का एक सरल साधन प्रदान करते हैं।
स्क्रीन धारावाहिक कंसोल क्षमताओं की पेशकश करता है, लेकिन जब मुझे ज़रूरत होती है तो मैं सिर्फ एक समर्पित ऐप (मिनीटर्मोइड को अजगर के साथ वितरित) का उपयोग करता हूं। अन्यथा मैं ऐसा कुछ भी नहीं सोच सकता जो या तो कर सकता है और दूसरा नहीं कर सकता है, लेकिन कोई इसे दूसरे की तुलना में सरल कर सकता है।
मैं एक या दूसरे को सीखूंगा, और यदि आप उत्सुक हैं या आप जो कुछ भी उठाते हैं उससे असंतुष्ट हैं, तो दूसरे को आज़माएं। मैं व्यक्तिगत रूप से tmux को पसंद करता हूं।
इस परिदृश्य में टर्मिनल मल्टीप्लेक्स का एक अन्य उपयोगी पहलू रिमोट सर्वर से कनेक्ट होने के बाद है। एक विशिष्ट उपयोग का मामला मुझे लगता है