होस्टनाम पर आधारित tmux स्टेटस लाइन कलर सेट करें


10

मैं tmuxमशीन के होस्टनाम के आधार पर गतिशील रूप से एक रंग चुनना चाहता हूं । चूंकि मैं अपनी tmux.confकई मशीनों को साझा करता हूं , इसलिए उनमें से प्रत्येक मेजबानों के लिए एक अनूठा रंग असाइन करना नेत्रहीन रूप से आसान होगा, खासकर जब एक साथ एक से अधिक पर काम करना। क्या यह करने योग्य है?

जवाबों:


3

मुझे भी यही सुविधा चाहिए थी। मैंने मूल रूप से इस .tmux.conf में सब कुछ विलय कर दिया

# cat <<__DATA__ >/dev/null
# Embed shell scripts

set -g status-utf8 on
set -g utf8 on

set -g default-terminal "screen-256color"

run "cut -c3- ~/.tmux.conf | bash -s apply_configuration"

# __DATA__
#
# apply_configuration() {
#    tmux set -g status-bg colour$(hash_string256 $(hostname))
# }
# hash_string256() {
#      hash_value=$(printf "%s" "$1" | md5sum | sed -e 's/[^[:alnum:]]\+//g' | tr "a-f" "A-F")
#      if [ "x" != "x$2" ]
#      then
#          v2="+ $2"
#      fi
#      echo "$(((0x$hash_value $v2) % 255))" | tr -d "-"
# }
# 
# $1

मैंने उपयोग करना हटा दिया bcक्योंकि मेरे पास मेरे गिट-बैश में नहीं था। इस प्रकार मैं चाहता था कि यह अतिरिक्त सामग्री को जोड़े बिना मेरे लिनक्स सिस्टम और विंडोज़ दोनों पर काम करे।


डर यह एक मूर्खतापूर्ण सवाल हो सकता है, लेकिन मैं वास्तव में इसका उपयोग कैसे करूं? मैंने इसे कॉपी / पेस्ट किया लेकिन फिर से लोड करने के बाद .tmux.confमुझे मिल गया "cut -c3- ~/.tmux.conf | bash -s apply_configuration" returned 1। बहरहाल, मेरी स्थिति पट्टी वास्तव में लाल हो गई !!!

3

मैं निम्नलिखित शेल फ़ंक्शन के साथ आया:

hash_string256() {
    # Hash $1 into a number
    hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
    # Add the hash with $2 and modulo 256 the result
    # if $2 == "" it is 0
    printf "ibase=16; (%s + %X) %% 100\n" $hash_value "$2" | bc
}

इस समारोह (परिणाम सत्य हैं, तो इस तरह इस्तेमाल किया जा सकता $HOSTहै LOL):

$hash_string256 $HOST
 113
$hash_string256 $HOST 127
 240

इसे tmuxआप के साथ कनेक्ट करने के लिए एक स्क्रिप्ट का उपयोग कर सकते हैं जो शुरू और कॉन्फ़िगर करता है tmux

#!/bin/sh
SESSION=$USER

hash_string256() {
    hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")
    printf "ibase=16; (%s + %X) %% 100 \n" $hash_value "$2" | bc
}

tmux -2 new-session -d -s $SESSION

tmux set -g status-fg colour$(hash_string256 $HOST)
tmux set -g status-bg colour$(hash_string256 $HOST 127)

# Attach to session
tmux -2 attach-session -t $SESSION

होस्टनाम के लिए LOLयह सेट status-fgटू colour113एंड status-bgटू होगा colour240। 127 की संख्या में $(hash_string256 $HOST 127)है इसलिए पृष्ठभूमि अग्रभूमि रंग और एक दूसरे से दूर के रूप में समान नहीं होगी।

कोई भी GNU सिस्टम के लिए नहीं

आपके सिस्टम है, तो md5के बजाय md5sumलाइन

hash_value=$(printf "%s" "$1" | md5sum |tr -d " -"| tr "a-f" "A-F")

से बदला जा सकता है

hash_value=$(printf "%s" "$1" | md5 | tr "a-f" "A-F")

अगर किसी को tmux.confमेरे अंदर फ़ंक्शन का उपयोग करने का तरीका पता है तो मैं इसकी सराहना करूंगा।
राफेल एहरेंस

1
मेरे tmux config में मनमाने ढंग से शेल फ़ंक्शन को परिभाषित करने और चलाने का एक तरीका शामिल है, जो tmux conf फाइल के अंदर निहित है।
कालेब

@ कालेब दिलचस्प। वर्तमान में मेरे पास इसे उत्तर में संपादित करने का समय नहीं है। लेकिन मैं इसे जोड़ दूंगा।
राफेल अहरेंस

1
आप इसे मुख्य उत्तर के रूप में दर्ज करने के बजाय उत्तर के लिए इसे वैकल्पिक रूप से समाप्त करना चाह सकते हैं, क्योंकि इसकी संभावना किसी भी व्यक्ति से बाहर निकलने को भ्रमित करने की है, जिनके बेल्ट के नीचे कुछ उन्नत शेल फू नहीं है। समाधान यहाँ एक हैक है, जिसमें डॉक्स शामिल हैं और दोनों ही फाइल को एक ही फाइल से बाहर करने के लिए एक कॉन्फ़िगर करने योग्य स्क्रिप्ट और एक निष्पादन योग्य स्क्रिप्ट प्राप्त करना है, इसलिए इसे लागू करने के लिए सिर्फ एक-दो लाइनों को ही नहीं, बल्कि पूरी कॉन्फ़िगरेशन फ़ाइल में बदलाव की आवश्यकता होती है । यह सही होना हर किसी के लिए नहीं होगा, इसलिए उन्हें सुझाव देने से पहले बाहरी स्क्रिप्ट का उपयोग करके अपने नियमित कॉन्फ़िगरेशन को संपादित करने का एक तरीका दें।
कालेब
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.