ITerm2 विंडो और टैब शीर्षक को zsh में बदलें


50

मैं टर्मिनल सत्रों के विंडो टैब को लेबल करना चाहता हूं। मैं OSX पर iterm2 में zshell का उपयोग कर रहा हूं। क्या टर्मिनल में विंडो टैब के लेबल को गतिशील रूप से बदलना संभव है?

जवाबों:


48

आप zshiTerm2 की विंडो शीर्षक सेट करने के लिए निम्नलिखित दर्ज कर सकते हैं :

echo -ne "\e]1;this is the title\a"

यदि आप वर्तमान समय या कार्यशील निर्देशिका को सम्मिलित करने के लिए स्वचालित करना चाहते हैं, zshतो precmd()फ़ंक्शन में शीर्षक सेट करने के लिए अपनी कॉन्फ़िगरेशन फ़ाइलों को उदा में संपादित करें $PWD

echo -ne "\e]1;$PWD\a"

आप अनुभाग में precmdफ़ंक्शन के बारे में पढ़ सकते हैं ।man zshmiscSPECIAL FUNCTIONS

यहाँ छवि विवरण दर्ज करें


3
जब मैं कमांड echo -ne "\ e] 1 पर अमल करता हूं; यह शीर्षक है" a "टैब शीर्षक नहीं बदलता है। क्या मुझे iterm2 में कोई सेटिंग बदलनी है?
bneil

15
पता लगा लिया। मुझे iterm-> वरीयताओं-> उपस्थिति अनुभाग में विंडो और टैब शीर्षक के सभी विकल्पों को रद्द करना होगा। और .zshrc में मुझे असहज करना / निर्यात जोड़ना होगा DIS_AUTO_TITLE = "सही" धन्यवाद @Daniel Beck
bneil

3
आपको सेट करने की भी आवश्यकता है Profiles > Terminal > Terminal Emulation > Terminal may set tab/window title
वघन

1
यह काम नहीं करता है (मेरे लिए, कम से कम) iTerm के सबसे बड़े संस्करण (3.3.0) में
iconoclast

और iTerm2(3.2.9) के नवीनतम स्थिर संस्करण पर मेरे लिए काम नहीं करता है
jalanb

45

मेरे लिए क्या काम करता है:

echo -e "\033];this is the title\007"

यदि आप Mac OSX और iTerm, iTerm2 का उपयोग करते हैं ::

  • iTerm → वरीयताएँ → उपस्थिति → विंडो और टैब शीर्षक → सभी को अनचेक करें

यदि आप zsh का उपयोग करते हैं, तो आपको अपनी सेटिंग्स संपादित करने की आवश्यकता हो सकती है। आपकी सेटिंग्स आम तौर पर फ़ाइल में होती हैं ~/.zshrc। आप यह सुनिश्चित करना चाहते हैं कि यह पंक्ति मौजूद है या नहीं:

DISABLE_AUTO_TITLE="true"

2
यह अभी भी 02/28/2018 के रूप में काम करता है।
salep

38

ITerm का उपयोग करने की सुविधाओं में से एक विंडो शीर्षक और टैब शीर्षक अलग से स्थापित करने की संभावना है: अलग से टैब और विंडो शीर्षक का उपयोग करने का उदाहरण

# $1 = type; 0 - both, 1 - tab, 2 - title
# rest = text
setTerminalText () {
    # echo works in bash & zsh
    local mode=$1 ; shift
    echo -ne "\033]$mode;$@\007"
}
stt_both  () { setTerminalText 0 $@; }
stt_tab   () { setTerminalText 1 $@; }
stt_title () { setTerminalText 2 $@; }

इस तरह आप तुरंत देख सकते हैं कि आप किस होस्ट से जुड़े हैं, किस विंडो में हैं, और प्रत्येक टैब के लिए विंडो शीर्षक उपयोगकर्ता और CWD को दिखाता है।


2
मैंने अभी देखा कि OS X Lion में Terminal.app संस्करण भी इसका समर्थन करता है।
ओरणगेनहिन

मूर्खतापूर्ण सवाल: आप इन कोड को .bashrcसही में जोड़ते हैं ?
क़ाज़ेक्स

यह भी प्रकट होता है कि (iTerm2 Build 1.0.0.20140629 में) जब तक आप विंडो का शीर्षक नहीं बदलते ... यह टैब शीर्षक को ट्रैक करता है, चाहे जो भी हो। मुझे यकीन है कि यह एक सेटिंग है। एक बार विंडो का शीर्षक बदल जाने के बाद (2) यह अब टैब शीर्षक को ट्रैक नहीं करता है।
मेई

मैंने उस फ़ंक्शन को शामिल करने के लिए ऊपर दिए गए फ़ंक्शन को संशोधित किया है जो DISABLE_AUTO_TITLE="true"इस मुद्दे को तय करता है और इस तरह अगर मैंने शीर्षक सेट नहीं किया है, तो मुझे अभी भी स्वचालित शीर्षक सुविधा
मिलती है

5

A precmdचाल करता है। हालाँकि, कुछ ओह-माय-ज़श थीम विंडो शीर्षक के साथ गड़बड़ करते हैं। PR_TITLEBARइसे ठीक करने के लिए एक रिक्त स्ट्रिंग पर सेट करें ।

set-window-title() {
  # /Users/clessg/projects/dotfiles -> ~/p/dotfiles
  window_title="\e]0;${${PWD/#"$HOME"/~}/projects/p}\a"
  echo -ne "$window_title"
}

PR_TITLEBAR=''
set-window-title
add-zsh-hook precmd set-window-title

मैं वरीयताएँ में iTerm2 की टैब सेटिंग्स के साथ खेलने की भी सिफारिश करूंगा -> उपस्थिति।



2

जवाब में से कोई भी मेरे लिए काम नहीं करता था, शायद iterm2 संस्करण (3.3.3) के लिए।

मुझे यह पता चला: https://gist.github.com/phette23/5270658#gistcomment-3020766

अनिवार्य रूप से, आप अन्य सभी उत्तरों में जो कुछ भी कहा जाता है, कर सकते हैं, लेकिन यह भी निर्धारित करने की आवश्यकता है Preferences > Profiles > General > Title -> Name (Job)

इसने मेरे लिए काम किया।


इस के तहत नहीं है Generalटैब, यह के अंतर्गत है Profilesटैब
Falmarri

सही। मैं > Profilesएक चूक गया । मेरी गलती। अपडेट किया गया।
नूनो गोनाक्लेव्स

1

स्वीकृत उत्तर ने मेरे लिए लंबे समय तक काम किया है लेकिन अब iTerm2 के नवीनतम संस्करण में टूट गया है। एक वर्कअराउंड मैंने पाया कि पायथन एपीआई को सक्षम करने और एक स्क्रिप्ट बनाने के लिए जो टैब का नाम सेट करता है जैसे:

#!/usr/bin/env python3.7
import argparse

import iterm2

def get_args():
    parser = argparse.ArgumentParser(description='Set the tab name')
    parser.add_argument('name')
    return parser.parse_args()

ARGS = get_args()

async def main(connection):
    app = await iterm2.async_get_app(connection)
    window = app.current_terminal_window
    if window is not None:
        tab = window.current_tab
        await tab.async_set_title(ARGS.name)
    else:
        # You can view this message in the script console.
        print("No current window")

iterm2.run_until_complete(main)

"Tab_name.py" के रूप में सहेजा गया, फिर इसके साथ इनवाइट किया गया:

~/Library/ApplicationSupport/iTerm2/iterm2env/versions/*/bin/python3 ~/Library/ApplicationSupport/iTerm2/Scripts/tab_name.py "new tab name"

यह स्वीकृत उत्तर के रूप में लगभग अच्छा या सुरुचिपूर्ण नहीं है, लेकिन यह काम करता है।


-2

iTerm -> प्राथमिकताएं -> सूरत -> खिड़की और टैब के शीर्षक -> चेक प्रोफ़ाइल नाम का विकल्प देखें


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