tmux प्रति-फलक शीर्षक का समर्थन करता है, लेकिन यह इन शीर्षकों को प्रदर्शित करने के लिए प्रति-फलक स्थान प्रदान नहीं करता है।
आप एस्केप अनुक्रम ESC ]2;
… ESC \
(जैसे tmux manpage में नाम और शीर्षक नामक अनुभाग देखें) के साथ एक फलक शीर्षक सेट कर सकते हैं । आप इसे शेल से इस तरह कर सकते हैं:
printf '\033]2;%s\033\\' 'title goes here'
प्रत्येक फलक का शीर्षक सिस्टम के होस्टनाम में चूक करता है। डिफ़ॉल्ट रूप से सक्रिय फलक का शीर्षक tmux स्टेटस लाइन के दाईं ओर प्रदर्शित होता है (सत्र चर status-right
का डिफ़ॉल्ट वैश्विक मान है "#22T" %H:%M %d-%b-%y
, जो फलक के शीर्षक, समय और दिनांक के 22 वर्ण दिखाता है)।
इसलिए, जब तक आप सक्रिय फलक का शीर्षक (यानी निष्क्रिय फलक का शीर्षक देखने के लिए पैन स्विच करने के लिए तैयार) को देखने में संतुष्ट हैं, आप डिफ़ॉल्ट कार्यक्षमता के साथ प्राप्त कर सकते हैं। बस प्रत्येक फलक के लिए मुख्य कमांड शुरू करने से पहले उचित शीर्षक-सेटिंग एस्केप अनुक्रम भेजें।
यदि आपको कुछ प्रति-फलक जानकारी प्रदर्शित करने के लिए पूरी तरह से एक समर्पित लाइन की आवश्यकता है, तो नेस्टेड tmux सेशन उतना नहीं हो सकता है (अनावश्यक) "ओवरकिल" जैसा कि आप पहले सोच सकते हैं।
सामान्य स्थिति में, कुछ दिए गए टर्मिनल पर एक इनवॉयलेट स्टेटस लाइन प्रदान करने के लिए, आपको एक पूर्ण टर्मिनल (पुनः) एमुलेटर की आवश्यकता होगी जो मूल टर्मिनल और एक नए टर्मिनल (एक कम लाइनों वाला) के बीच बैठता है। आंतरिक टर्मिनल को भेजे गए नियंत्रण अनुक्रमों का अनुवाद करने और उन्हें मूल टर्मिनल के लिए अनुवाद करने के लिए ऐसे (पुनः) अनुकरण की आवश्यकता होती है। उदाहरण के लिए, बाहरी टर्मिनल के निचले भाग में एक कमांड लाइन बनाए रखने के लिए कमांड
अंतिम पंक्ति में जाएं।
आंतरिक टर्मिनल को भेजा जाना चाहिए
अगली पंक्ति में जाएं।
जब बाहरी टर्मिनल के लिए भेजा और भेजा जाता है। इसी तरह, आंतरिक टर्मिनल के लिए भेजा जाने वाला एलएफ बनना चाहिए
यदि कर्सर पिछली रेखा के बगल में है, तो इस रेखा को और इसके ऊपर की सभी रेखाओं को एक पंक्ति तक स्क्रॉल करें, ताकि अगली अगली-अंतिम पंक्ति (अंतिम पंक्ति पर स्थिति रेखा की सुरक्षा) प्रदान की जा सके। अन्यथा, एक एलएफ भेजें।
बाहरी टर्मिनल में।
Tmux और स्क्रीन जैसे प्रोग्राम सिर्फ ऐसे टर्मिनल री-एमुलेटर हैं। निश्चित रूप से, टर्मिनल एमुलेटर के चारों ओर लिपटी हुई अन्य कार्यक्षमता है, लेकिन आपको विश्वसनीय स्थिति रेखा प्रदान करने के लिए टर्मिनल एमुलेशन कोड के एक बड़े हिस्से की आवश्यकता होगी ।
हालांकि, एक हल्के वजन समाधान के रूप में लंबे समय के रूप में है
- आपके प्रोग्राम ( Node.js उदाहरण) में उन पैन के साथ सीमित टर्मिनल इंटरैक्शन हैं जिनमें वे चल रहे हैं (यानी कोई कर्सर पोजिशनिंग नहीं), और
- जब आपके प्रोग्राम चल रहे हों, तब आप पैन का आकार परिवर्तन न करें।
कई टर्मिनल एमुलेटर की तरह, tmux अपने पैन में "सेट स्क्रॉलिंग क्षेत्र" टर्मिनल कंट्रोल कमांड का समर्थन करता है। आप स्क्रॉलिंग क्षेत्र को टर्मिनल के शीर्ष (या नीचे) एन -1 लाइनों तक सीमित करने के लिए इस कमांड का उपयोग कर सकते हैं और गैर-स्क्रॉलिंग लाइन में कुछ प्रकार के उदाहरण-पहचान पाठ लिख सकते हैं।
प्रतिबंध (कोई कर्सर आंदोलन आदेश की अनुमति नहीं, कोई आकार नहीं देता) की आवश्यकता होती है क्योंकि प्रोग्राम जो आउटपुट उत्पन्न कर रहा है (उदाहरण के लिए Node.js उदाहरण) को पता नहीं है कि स्क्रॉल किसी विशेष क्षेत्र तक सीमित है। यदि आउटपुट-जनरेटिंग प्रोग्राम स्क्रॉलिंग क्षेत्र के बाहर कर्सर को स्थानांतरित करने के लिए हुआ, तो आउटपुट विकृत हो सकता है। इसी तरह, टर्मिनल एमुलेटर शायद स्वचालित रूप से स्क्रॉलिंग क्षेत्र को रीसेट करता है जब टर्मिनल को आकार दिया जाता है (इसलिए "गैर-स्क्रॉलिंग लाइन" शायद स्क्रॉलिंग को समाप्त कर देगा)।
मैंने एक स्क्रिप्ट लिखी जो tput
उपयुक्त नियंत्रण अनुक्रम उत्पन्न करने के लिए उपयोग करती है, गैर-स्क्रॉलिंग लाइन में लिखें, और कर्सर को स्क्रॉलिंग क्षेत्र में ले जाने के बाद एक प्रोग्राम चलाएं:
#!/bin/sh
# usage: no_scroll_line top|bottom 'non-scrolling line content' command to run with args
#
# Set up a non-scrolling line at the top (or the bottom) of the
# terminal, write the given text into it, then (in the scrolling
# region) run the given command with its arguments. When the
# command has finished, pause with a prompt and reset the
# scrolling region.
get_size() {
set -- $(stty size)
LINES=$1
COLUMNS=$2
}
set_nonscrolling_line() {
get_size
case "$1" in
t|to|top)
non_scroll_line=0
first_scrolling_line=1
scroll_region="1 $(($LINES - 1))"
;;
b|bo|bot|bott|botto|bottom)
first_scrolling_line=0
scroll_region="0 $(($LINES - 2))"
non_scroll_line="$(($LINES - 1))"
;;
*)
echo 'error: first argument must be "top" or "bottom"'
exit 1
;;
esac
clear
tput csr $scroll_region
tput cup "$non_scroll_line" 0
printf %s "$2"
tput cup "$first_scrolling_line" 0
}
reset_scrolling() {
get_size
clear
tput csr 0 $(($LINES - 1))
}
# Set up the scrolling region and write into the non-scrolling line
set_nonscrolling_line "$1" "$2"
shift 2
# Run something that writes into the scolling region
"$@"
ec=$?
# Reset the scrolling region
printf %s 'Press ENTER to reset scrolling (will clear screen)'
read a_line
reset_scrolling
exit "$ec"
आप इसे इस तरह उपयोग कर सकते हैं:
tmux split-window '/path/to/no_scroll_line bottom "Node instance foo" node foo.js'
tmux split-window '/path/to/no_scroll_line bottom "Node instance bar" node bar.js'
tmux split-window '/path/to/no_scroll_line bottom "Node instance quux" node quux.js'
स्क्रिप्ट का काम बाहर भी होना चाहिए tmux रूप में लंबे समय टर्मिनल का समर्थन करता है के रूप में और उसके प्रकाशित करता है csr
और cup
terminfo क्षमताओं।