SSD Nodes Learn Hosting plans →
गाइड Matt Connorलेखक: Matt Connor · अपडेट किया गया: 2026-08-23

Claude Code में statusline कैसे सेटअप करें

Claude Code में statusLine कॉन्फ़िगर करने का तरीका जानें। अपनी VPS सेटिंग्स में hostname, git branch और model दिखाने के लिए स्क्रिप्ट का उपयोग करें ताकि गलत सर्वर पर काम न हो।

Claude Code statusline क्या दिखाता है

Claude Code statusline प्रॉम्प्ट के नीचे एक पंक्ति होती है जो आपके द्वारा लिखे गए स्क्रिप्ट का आउटपुट प्रदर्शित करती है। आप statusLine ब्लॉक को settings.json में जोड़ते हैं और इसे एक कमांड की ओर निर्देशित करते हैं। Claude Code उस कमांड को चलाता है, सेशन स्टेट को JSON के रूप में स्टैंडर्ड इनपुट पर भेजता है, और कमांड जो कुछ भी स्टैंडर्ड आउटपुट पर लिखता है उसे प्रिंट करता है।

यही पूरा अनुबंध है। आपकी स्क्रिप्ट stdin पर JSON पढ़ती है और stdout पर टेक्स्ट प्रिंट करती है। यह आपकी मशीन पर चलता है और जो कुछ भी यह प्रिंट करता है वह मॉडल को नहीं भेजा जाता है, इसलिए इसमें कोई टोकन खर्च नहीं होता है।

एक प्रोजेक्ट वाले लैपटॉप पर यह केवल सजावट है। तीन सर्वर वाले सेटअप पर यह एक सुरक्षा कवच है। हर टर्मिनल में Claude Code का हर सेशन एक जैसा दिखता है, इसलिए बिना लेबल वाली चार SSH विंडो का मतलब है कि माइग्रेशन गलत सर्वर पर हो सकता है। होस्टनेम से शुरू होने वाली statusline इस तरह की गलतियों को समाप्त कर देती है।

settings.json में statusLine सेटिंग कहाँ स्थित होती है

इसे अपनी user settings में ~/.claude/settings.json पर रखें, जो उस मशीन के हर प्रोजेक्ट पर लागू होती है। किसी रिपॉजिटरी के अंदर .claude/settings.json पर मौजूद प्रोजेक्ट सेटिंग्स भी काम करती हैं, और उस डायरेक्टरी के लिए वे ही प्रभावी होती हैं।

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh"
  }
}

type हमेशा "command" होता है। command मान एक शेल के माध्यम से चलता है, इसलिए यह किसी स्क्रिप्ट का पाथ या एक साधारण कमांड हो सकता है। कोई भी स्क्रिप्ट लिखने से पहले यह जांच लें कि वायरिंग काम कर रही है या नहीं:

{
  "statusLine": {
    "type": "command",
    "command": "hostname -s"
  }
}

Claude Code शुरू करें और एक संदेश भेजें। प्रॉम्प्ट के नीचे की पट्टी अब सर्वर का छोटा होस्टनेम दिखाएगी। यदि यह खाली रहती है, तो समस्या सेटिंग या ट्रस्ट डायलॉग में है, न कि आपकी स्क्रिप्ट में। नीचे "statusline खाली क्यों रहती है" पढ़ें।

अगस्त 2026 तक तीन वैकल्पिक कुंजियाँ मौजूद हैं। padding वर्णों में क्षैतिज स्पेसिंग जोड़ता है और इसका डिफ़ॉल्ट मान 0 है। refreshInterval सामान्य ट्रिगर्स के अलावा हर N सेकंड में कमांड को फिर से चलाता है, जिसका न्यूनतम मान 1 है; इसकी आवश्यकता आपको केवल तब होती है जब लाइन में घड़ी या ऐसी कोई चीज़ दिखाई दे जो सत्र के निष्क्रिय रहने पर भी बदलती रहती है। hideVimModeIndicator इन-बिल्ट -- INSERT -- टेक्स्ट को तब दबा देता है जब आपकी अपनी स्क्रिप्ट पहले से ही vim मोड को रेंडर कर रही होती है।

statusline script को कौन सा डेटा प्राप्त होता है?

किसी भी फील्ड लिस्ट पर भरोसा न करें, इस पेज पर दी गई जानकारी पर भी नहीं। अपने वर्ज़न द्वारा भेजे जाने वाले वास्तविक ऑब्जेक्ट को कैप्चर करें। एक अस्थायी स्क्रिप्ट लिखें जो stdin को एक फाइल में सेव करे:

cat > ~/.claude/statusline-capture.sh <<'EOF'
#!/bin/bash
cat > /tmp/statusline-input.json
echo "captured"
EOF
chmod +x ~/.claude/statusline-capture.sh

statusLine.command को उस फाइल पर पॉइंट करें, एक सेशन शुरू करें और एक मैसेज भेजें। बार captured को पढ़ता है। अब देखें कि क्या प्राप्त हुआ:

jq . /tmp/statusline-input.json

आपके पास अपने बिल्ड के लिए सटीक स्ट्रक्चर है, और जब भी कोई अपडेट कुछ बदलता है, तो आप इसे दोहरा सकते हैं।

अगस्त 2026 में प्रलेखित स्थिर हिस्से, फ्लैट कीज़ (flat keys) के बजाय नेस्टेड ऑब्जेक्ट्स हैं। model में id और display_name होते हैं। workspace में current_dir और project_dir होते हैं: current_dir वह स्थान है जहाँ सेशन अभी है, project_dir वह स्थान है जहाँ से इसे लॉन्च किया गया था, और वर्किंग डायरेक्टरी बदलने पर ये दोनों अलग हो जाते हैं। टॉप-लेवल cwd में वही वैल्यू होती है जो workspace.current_dir में होती है। context_window में टोकन काउंट्स के साथ-साथ पहले से कैलकुलेट किया गया used_percentage होता है। cost में total_cost_usd और ड्यूरेशन काउंटर्स होते हैं। session_id सेशन के दौरान स्थिर रहता है और हर सेशन में यूनिक होता है, जो बाद में कैशिंग के लिए महत्वपूर्ण है।

तीन नियम स्क्रिप्ट को स्कीमा परिवर्तनों के बीच जीवित रखते हैं।

कुछ कीज़ अनुपस्थित होती हैं, null नहीं। vim, agent, pr, worktree और effort केवल तभी दिखाई देते हैं जब संबंधित फीचर सक्रिय हो। vim मोड बंद होने पर jq -r के साथ .vim.mode को पढ़ने पर लिटरल स्ट्रिंग null प्रिंट होती है, और आपका बार रीडर को null दिखाता है। हर सेलेक्टर में // empty जोड़ें, ताकि कोई की गायब होने पर कुछ भी प्रिंट न हो।

कुछ वैल्यूज़ शुरुआत में null होती हैं। context_window.used_percentage और context_window.current_usage पहले API रिस्पॉन्स से पहले null होते हैं, और current_usage, /compact के बाद तब तक null पर वापस आ जाता है जब तक कि अगला कॉल उसे फिर से पॉप्युलेट न कर दे। इसलिए बार पर कॉन्टेक्स्ट प्रतिशत के लिए // 0 की आवश्यकता होती है, अन्यथा यह हर सेशन के पहले कुछ सेकंड के लिए null पढ़ता है। बार पर उस नंबर को डालने से पहले, यह जानना मददगार होता है कि कॉन्टेक्स्ट विंडो वास्तव में कैसे भरती है।

git ब्रांच JSON में नहीं होती है। कोई भी फील्ड इसकी रिपोर्ट नहीं करता है। आपके बार पर दिखने वाली कोई भी ब्रांच आपकी स्क्रिप्ट द्वारा स्वयं git चलाने से आती है।

एक statusline स्क्रिप्ट जो टूटने के बजाय degrade होती है

यह copy-paste करने योग्य संस्करण है। यह hostname, working directory, git branch और model name को print करता है। हर field के लिए एक fallback मौजूद है, इसलिए एक खाली JSON object भी एक उपयोगी line प्रदान करता है।

#!/bin/bash
# ~/.claude/statusline.sh
input=$(cat)

# Read one field. Prints nothing when the key is missing or null.
field() { printf '%s' "$input" | jq -r "$1 // empty" 2>/dev/null; }

HOST=$(hostname -s 2>/dev/null)
[ -z "$HOST" ] && HOST="host"

DIR=$(field '.workspace.current_dir')
[ -z "$DIR" ] && DIR=$(field '.cwd')
[ -z "$DIR" ] && DIR="$PWD"

MODEL=$(field '.model.display_name')
[ -z "$MODEL" ] && MODEL="claude"

SHORT="$DIR"
if [ -n "$HOME" ]; then
  case "$DIR" in
    "$HOME") SHORT="~" ;;
    "$HOME"/*) SHORT="~/${DIR#"$HOME"/}" ;;
  esac
fi

BRANCH=""
if git -C "$DIR" rev-parse --git-dir >/dev/null 2>&1; then
  BRANCH=$(git -C "$DIR" branch --show-current 2>/dev/null)
  [ -z "$BRANCH" ] && BRANCH="detached"
fi

CYAN=$'\033[36m'
YELLOW=$'\033[33m'
DIM=$'\033[2m'
RESET=$'\033[0m'

LINE="${CYAN}${HOST}${RESET} ${SHORT}"
[ -n "$BRANCH" ] && LINE="${LINE} ${YELLOW}${BRANCH}${RESET}"
LINE="${LINE} ${DIM}${MODEL}${RESET}"

printf '%s\n' "$LINE"

हर read प्रक्रिया field के माध्यम से होती है, जो // empty को append करती है, इसलिए यदि कोई key rename या remove कर दी जाए, तो यह एक खाली string उत्पन्न करती है और अगली line एक default मान प्रदान करती है। Directory का मान workspace.current_dir से cwd और फिर $PWD पर fallback होता है। Branch का मान एक साधारण git के बजाय git -C "$DIR" से आता है, ताकि branch हमेशा उस directory से मेल खाए जिसे bar दिखा रहा है।

इसे save करें, फिर इसे executable बनाएँ:

chmod +x ~/.claude/statusline.sh

Execute bit अनिवार्य है। Claude Code कमांड को shell के माध्यम से चलाता है, इसलिए +x के बिना कोई भी script विफल हो जाती है और Permission denied error देती है, जिससे कोई stdout उत्पन्न नहीं होता और row बिना किसी दृश्य error के खाली रह जाती है।

jq कमांड line पर JSON को parse करता है और यह एक नए Ubuntu server पर installed नहीं होता है:

sudo apt update && sudo apt install -y jq

इसके बाद, ऊपर दिए गए पहले settings.json block का उपयोग करके setting को script की ओर point करें।

स्क्रिप्ट पर भरोसा करने से पहले उसका परीक्षण करें

इसे दो बार मैन्युअल रूप से चलाएं। पहली बार एक सामान्य session object के साथ:

echo '{"model":{"display_name":"Opus"},"workspace":{"current_dir":"/srv/api"},"session_id":"t1"}' | ~/.claude/statusline.sh

आपको hostname मिलेगा, उसके बाद /srv/api, और फिर Opus। कोई branch दिखाई नहीं देगी, क्योंकि आपकी मशीन पर /srv/api संभवतः एक git repository नहीं है।

दूसरी बार, degradation test करें, जिसे अक्सर लोग छोड़ देते हैं:

echo '{}' | ~/.claude/statusline.sh

एक खाली object वह सबसे खराब स्थिति है जो schema में बदलाव के कारण आपको मिल सकती है। यह लाइन अभी भी प्रिंट होती है: hostname, $PWD से वर्तमान directory, और वह स्थान जहाँ model का नाम आता है वहाँ claude शब्द। कुछ भी क्रैश नहीं होता और न ही null प्रिंट होता है। जो स्क्रिप्ट इस परीक्षण को पास कर लेती है, वह किसी field का नाम बदले जाने पर भी सुरक्षित रहती है, क्योंकि आपकी स्क्रिप्ट के लिए field का नाम बदलना और field का गायब होना एक ही घटना है।

आपको क्या दिखाई देना चाहिए

Statusline इन-बिल्ट footer badges के ऊपर अपनी अलग पंक्ति में रेंडर होती है और उन्हें हटाती नहीं है। एक सही ढंग से काम कर रहे सेटअप पर यह एक पंक्ति की होती है: cyan रंग में short hostname, उसके बाद working directory जिसमें आपकी home directory ~ के रूप में संक्षिप्त हो जाती है, फिर directory के git repository होने पर पीले रंग में branch का नाम, और अंत में धुंधले (dimmed) रंग में model का नाम। web-01 ~/api main Opus के समान कुछ दिखाई देगा, जिसमें ये चार हिस्से रंगे हुए होंगे।

जब कोई session शुरू होता है (resume सहित), जब कोई नया assistant message आता है, /compact के समाप्त होने के बाद, जब permission mode बदलता है, जब vim mode toggle होता है, और यदि आपने सेट किया हो तो refreshInterval tick पर, यह पंक्ति आपकी script को फिर से चलाती है। Updates को 300 ms पर debounce किया जाता है, इसलिए परिवर्तनों की एक श्रृंखला होने पर भी script केवल एक बार चलती है। Autocomplete, help menu और permission prompts के दौरान यह bar छिप जाती है, और फिर वापस आ जाती है।

Hostname का स्थान सबसे पहले क्यों होना चाहिए

जब आप एक से अधिक सर्वर पर agents चलाते हैं, तो टर्मिनल ही एकमात्र ऐसी चीज है जो आपको बताती है कि आप कहाँ हैं, और टर्मिनल अक्सर गलत जानकारी देते हैं। यदि आप tmux pane के अंदर से दूसरा ssh connection खोलते हैं, तो window title अक्सर पुराना नाम ही दिखाता है, क्योंकि title उस shell द्वारा सेट किया जाता है जिसे यह पता ही नहीं चलता कि वह बदल गया है। यदि आप Claude Code को VPS पर detached tmux session में चलता हुआ छोड़ देते हैं और एक दिन बाद reattach करते हैं, तो स्क्रीन पर कुछ भी build server और production box के बीच अंतर नहीं बताता।

Statusline अलग है क्योंकि इसे Claude Code स्वयं, प्रति session, उस डेटा से रेंडर करता है जो उस session के पास है। इसे गलत pane से inherit नहीं किया जा सकता और न ही यह किसी ऐसे shell prompt द्वारा पुराना (stale) रह सकता है जो कभी refresh नहीं हुआ। यह जो दिखाता है, वही वह box है जिस पर agent फाइलें लिख रहा है।

प्रत्येक सर्वर को अपना एक रंग दें ताकि आप उसे पढ़ने से पहले ही पहचान लें। LINE= assignment के ऊपर ये दो लाइनें जोड़ें:

CODE=$(printf '%s' "$HOST" | cksum | cut -d' ' -f1)
HOST_COLOR=$(printf '\033[%dm' "$((31 + CODE % 6))")

फिर ${CYAN} के स्थान पर ${HOST_COLOR} का उपयोग करें। cksum hostname का checksum प्रिंट करता है, इसलिए एक निश्चित नाम हमेशा 31 से 36 की रेंज में एक ही रंग से जुड़ता है, जो लाल से लेकर cyan तक होता है। इसी script को हर box पर कॉपी करें और प्रत्येक box खुद को लेबल कर लेगा।

Directory भी इसी कारण से अपना स्थान बनाती है। /srv/api और /srv/api-staging एक ssh command में केवल एक keystroke की दूरी पर होते हैं, लेकिन प्रभाव में वे एक पूरी घटना (incident) के बराबर अंतर पैदा कर सकते हैं। Model और branch दो अन्य चीजें हैं जो स्क्रीन की चौड़ाई के लायक हैं: model आपको बताता है कि आपने कौन सा session resume किया है, और branch आपको बताता है कि क्या agent main पर commit करने वाला है।

छोटी स्क्रीन पर यह सब और अधिक स्पष्ट हो जाता है, क्योंकि वहाँ भरोसा करने के लिए कोई window title नहीं होता। यदि आपका सेटअप ऐसा ही है, तो फोन से Claude Code चलाने के बारे में देखें।

स्क्रिप्ट को तेज़ रखें

आपकी स्क्रिप्ट हर assistant message पर चलती है, और नया अपडेट आने पर Claude Code इन-फ्लाइट रन को रद्द कर देता है। इसलिए एक धीमी स्क्रिप्ट पुरानी जानकारी दिखाती है, या कुछ भी नहीं दिखाती।

प्रत्येक jq कॉल में कुछ मिलीसेकंड का समय लगता है। git वह हिस्सा है जो धीमा हो जाता है: एक बड़े रिपॉजिटरी में कोल्ड कैश के साथ git status में सैकड़ों मिलीसेकंड लग सकते हैं। ऊपर दी गई स्क्रिप्ट जानबूझकर git status से बचती है और git branch --show-current को कॉल करती है, जो .git/HEAD को पढ़ता है और तुरंत परिणाम देता है।

यदि आप कुछ भारी जोड़ते हैं, तो उसे एक फ़ाइल में कैश करें और हर कुछ सेकंड में रिफ्रेश करें। फ़ाइल को सेशन के आधार पर की (key) दें:

CACHE="/tmp/statusline-$(field '.session_id')"

$$ के बजाय session_id का उपयोग करें। $$ आपकी स्क्रिप्ट की प्रोसेस आईडी है, जो हर बार अलग होती है, इसलिए इस पर आधारित कैश कभी हिट नहीं होता और आपको हर बार पूरी लागत चुकानी पड़ती है। session_id पूरे सेशन के लिए स्थिर रहता है और अलग-अलग सेशन के बीच भिन्न होता है, इसलिए दो अलग-अलग रिपॉजिटरी में चल रहे दो Claude Code सेशन एक-दूसरे के कैश किए गए ब्रांच नाम को नहीं पढ़ सकते। सेशन डिज़ाइन के अनुसार ही अलग-थलग रहते हैं, इसलिए एक सेशन से दूसरे सेशन में काम भेजने के लिए एक जानबूझकर कदम उठाना पड़ता है, जो एक Claude Code सेशन से दूसरे में संदेश भेजने के लिए है।

एक और सीमा जिसे जानना ज़रूरी है: tput cols स्टेटसलाइन स्क्रिप्ट के अंदर काम नहीं करता है। Claude Code टर्मिनल से आपकी स्क्रिप्ट को अटैच करने के बजाय आउटपुट को कैप्चर कर लेता है, इसलिए विड्थ डिटेक्शन के पास मापने के लिए कुछ नहीं होता। Claude Code v2.1.153 और उसके बाद के वर्ज़न में कमांड चलाने से पहले COLUMNS और LINES एनवायरनमेंट वेरिएबल्स सेट करता है, इसलिए जब आपको यह तय करना हो कि कितना प्रिंट करना है, तो $COLUMNS को पढ़ें।

Statusline खाली क्यों रहती है

कुछ भी दिखाई नहीं दे रहा है। ls -l ~/.claude/statusline.sh के साथ execute bit की जाँच करें, फिर ऊपर दिए गए mock input के साथ script को मैन्युअल रूप से चलाएँ। यदि यह shell पर एक line print करता है लेकिन Claude Code में नहीं, तो claude --debug से शुरुआत करें, जो session के पहले statusline run का exit code और stderr log करता है।

Debug log में Status line command skipped: workspace trust not accepted दिखाई देता है। Statusline एक shell command execute करती है, इसलिए यह hooks के समान ही workspace trust gate के पीछे रहती है। जब तक आप उस directory के लिए trust dialog स्वीकार नहीं करते, command कभी नहीं चलती। यह VPS पर आम है, जहाँ हर नया clone एक ऐसी directory होती है जिसे Claude Code ने पहले नहीं देखा है। उस directory में Claude Code को restart करें और dialog स्वीकार करें।

सब कुछ खाली है और disableAllHooks set है। settings.json में "disableAllHooks": true statusline को भी disable कर देता है, क्योंकि यह वही shell-execution gate है। इसे हटा दें या false पर set करें।

Row null print करती है। एक jq selector ऐसी key तक पहुँच गया है जो missing या null है, और jq -r null को चार characters null के रूप में print करता है। text के लिए // empty और numbers के लिए // 0 जोड़ें।

Script edit करने के तुरंत बाद row खाली हो जाती है। कोई command जो non-zero exit देती है, या कुछ भी print नहीं करती, row को खाली कर देती है। इसका सामान्य कारण [ -n "$BRANCH" ] && LINE="..." जैसी अंतिम line होती है, जो branch खाली होने पर 1 exit देती है और पूरी script का exit code अपने साथ ले जाती है। printf को अंत में रखें, या exit 0 जोड़ें।

Escape codes बार पर \e]8;; जैसे literal text के रूप में दिखते हैं। echo -e के बजाय printf '%b' का उपयोग करें। Clickable OSC 8 links के लिए ऐसे terminal की आवश्यकता होती है जो उनका समर्थन करे, और tmux या SSH इन sequences को हटा सकते हैं, इसलिए remote box पर plain colour सुरक्षित विकल्प है।

Row का दाहिना हिस्सा कट जाता है। System notifications और verbose-mode token counter उस row को दाईं ओर से साझा करते हैं, और संकीर्ण (narrow) terminal में overlap खो जाता है। output को छोटा रखें। बार पर किसी संख्या के बजाय usage का वास्तविक हिसाब देखने के लिए, Claude Code tokens की गणना कैसे करता है देखें।

FAQ

Claude Code statusline सेटिंग कहाँ स्थित होती है?

यह settings.json में, एक statusLine ब्लॉक के रूप में होती है, जिसमें type को "command" पर और command को किसी स्क्रिप्ट पाथ या शेल कमांड पर सेट किया जाता है। यूजर सेटिंग्स ~/.claude/settings.json पर होती हैं और उस मशीन के हर प्रोजेक्ट पर लागू होती हैं। प्रोजेक्ट सेटिंग्स रिपॉजिटरी के अंदर .claude/settings.json पर होती हैं और उस डायरेक्टरी के लिए प्रभावी रहती हैं। सेटिंग्स अपने आप रीलोड हो जाती हैं, लेकिन बदलाव केवल अगले अपडेट ट्रिगर पर दिखाई देते हैं, जैसे कि आपका अगला मैसेज।

मेरी Claude Code statusline खाली क्यों है?

इसके लगभग सभी कारण चार स्थितियों में आते हैं। स्क्रिप्ट में execute बिट गायब है, इसलिए शेल Permission denied रिटर्न करता है और stdout तक कुछ नहीं पहुँचता। वर्कस्पेस ट्रस्ट डायलॉग कभी स्वीकार नहीं किया गया, और claude --debug में Status line command skipped: workspace trust not accepted लॉग होता है। disableAllHooks का मान true है, जो उसी गेट के तहत स्टेटसलाइन को डिसेबल कर देता है। या फिर स्क्रिप्ट नॉन-जीरो एग्जिट कोड देती है, जिससे पंक्ति खाली हो जाती है। इसे पहले मैन्युअल रूप से टेस्ट करें: echo '{}' | ~/.claude/statusline.sh को कुछ न कुछ प्रिंट करना चाहिए।

क्या स्टेटसलाइन JSON में git ब्रांच शामिल होती है?

नहीं। JSON में सेशन स्टेट जैसे कि मॉडल, वर्कस्पेस डायरेक्टरी, कॉन्टेक्स्ट विंडो नंबर और कॉस्ट की जानकारी होती है। इसमें git के बारे में कुछ भी रिपोर्ट नहीं होता। आपके बार पर दिखने वाली ब्रांच आपकी अपनी स्क्रिप्ट से आती है जो git branch --show-current को कॉल करती है। JSON से डायरेक्टरी को git -C "$DIR" के साथ पास करें, ताकि ब्रांच हमेशा उस डायरेक्टरी से मेल खाए जिसे बार दिखा रहा है।

क्या स्टेटसलाइन से टोकन खर्च होते हैं या सेशन धीमा होता है?

इससे कोई टोकन खर्च नहीं होता, क्योंकि स्क्रिप्ट स्थानीय रूप से चलती है और इसका आउटपुट कभी भी मॉडल को नहीं भेजा जाता। गति आपकी जिम्मेदारी है। यह कमांड हर असिस्टेंट मैसेज पर 300 ms के डिबाउंस के साथ चलती है, और नया अपडेट आने पर Claude Code चल रही रन को कैंसिल कर देता है, इसलिए एक सेकंड लेने वाली स्क्रिप्ट पुराना टेक्स्ट दिखा सकती है। बड़ी रिपॉजिटरी में git status का उपयोग करने से बचें, और किसी भी धीमी प्रक्रिया को session_id पर आधारित फाइल में कैश करें।

मैं हर सर्वर पर अलग स्टेटसलाइन कैसे दिखाऊं?

एक ही स्क्रिप्ट रखें और उसे मशीन के अनुसार रीड करने दें। ऊपर दी गई स्क्रिप्ट $HOSTNAME को प्रिंट करती है और hostname -s को फॉलबैक के रूप में उपयोग करती है, इसलिए हर बॉक्स पर कॉपी की गई वही फाइल प्रत्येक को सही ढंग से लेबल करती है, और चेकसम कलर ट्रिक हर होस्टनेम को अपना अलग रंग देती है। यदि किसी सर्वर को अलग लेआउट की आवश्यकता है, तो उस बॉक्स पर जिस रिपॉजिटरी में आप काम कर रहे हैं, उसकी प्रोजेक्ट सेटिंग्स में एक statusLine ब्लॉक डालें, क्योंकि प्रोजेक्ट सेटिंग्स उस डायरेक्टरी के लिए यूजर सेटिंग्स को ओवरराइड कर देती हैं।