Jak zmienić tytuł Gnome-Terminal?

165

Mam kilka instancji terminali działających w moim środowisku roboczym, chciałbym ustawić dla nich konkretny tytuł, aby mieć jasny obraz, do czego służy dany terminal, tj. Apache, edit_ini, postgres itp.

Oczywiście z linii poleceń.

topless
źródło
W nawiązaniu do komentarza Warda: Nie zapomnij „rozbroić PROMPT_COMMAND” przed wysłaniem sekwencji ucieczki przed zmianą tytułu, w przeciwnym razie wszelkie zmiany, które wprowadzisz, zostaną utracone, gdy tylko pojawi się monit o następną powłokę.
Jon Green,
Podobne pytanie dotyczące KDE można znaleźć na stackoverflow.com/questions/8782159/…
naught101
Miałem ten problem podczas przełączania z OS X na Ubuntu. Aby uzyskać niestandardowe tytuły w konfiguracji z wieloma kartami, użyłem gnome-terminal --load-configrazem z tym skryptem , który napisałem.
halfer
3
dodaj następujące polecenie do pliku .bashrc w katalogu domowym # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleteraz możesz użyć aliasu termttl do ustawienia tytułu, np.termttl askubuntu
urmalp
1
„Chroniony”, więc nie mogę udzielić odpowiedzi. gnome-terminalDomyślnie Gnome3 to PROMPT_COMMAND=__vte_prompt_command. Używa to wartości z profili we wstępach. Gdy istnieje wiele profili, pozycje menu Nowa karta i Nowe okno mają pozycję podmenu dla każdego profilu. Instrukcja sposobem jest otworzyć nową kartę do terminalu, kliknij prawym przyciskiem myszy na tytule zakładki, a następnie wybierz ustawić tytuł ... . (Przeczytałoby to o wiele łatwiej w osobnej odpowiedzi, ale ...)
Rich

Odpowiedzi:

145
  • Najbardziej przyjazny dla użytkownika sposób to wybranie go z menu Terminal -> „Ustaw tytuł ...”.

  • Istnieją jednak inne sposoby na wydanie

    gnome-terminal --title="SOME TITLE HERE"
    

    Może to nie dać pożądanego efektu, ponieważ istnieje duża szansa, że ​​Twoje .bashrczachowanie zostanie zastąpione.

  • Doprowadzając nas do ostatniej metody, którą bezwstydnie wyrwałem z siebie .bashrc.

    PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'
    

Jako dodatkowe odniesienie, jest to szczególna linia w moim .bashrc

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

Konieczne może być także skomentowanie tego kodu w pliku ~ / .bashrc

case "$TERM" in
xterm*|rxvt*)
    # JEFFYEE REMOVED because it makes commands to title() not work
    #PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac
Ward Muylaert
źródło
2
Musisz skomentować lub usunąć, jak wspomniano, aby zadziałać!
topless
1
@Ward: PROMPT_COMMANDto program do uruchomienia. PS1i PS1tekstowe struny , które są wyświetlane. W powyższym przykładzie uruchamiane jest polecenie echo, które następnie po prostu wypisuje ciąg. Więcej informacji na stronie man bashlub manpages.ubuntu.com/bash .
sladen
29
Terminal GNOME 3.16.2 mówiOption "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik,
10
Na Gnome 3.18.3 nie ma pozycji „Ustaw tytuł” ​​w menu: /
shadi 26.09.16
2
Dla każdego innego, co mylił się przez
gobbledegook
65

Odpowiedź totemu jest świetna, jeśli chcesz ustawić swój tytuł na podstawie hosta, na którym się znajdujesz, za każdym razem, gdy otwierasz terminal. Jeśli chcesz tylko szybko ustawić tytuł, możesz po prostu uruchomić echo:

echo -ne "\033]0;SOME TITLE HERE\007"

lub wykonaj prostą funkcję (wewnątrz ~/.bashrc), powiedzmytermtitle

termtitle() { printf "\033]0;$*\007"; }

z którym możesz biegać termtitle some title here.

naught101
źródło
3
lub podobnie możemy dodać jako alias bash, dodając poniższe wiersze w ~ / .bash_aliases, function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titlea następnie użyj: $ title term_title
murarisumit
11
Niestety wydaje się, że nie działa dla mnie w GNOME terminal 3.6.2.
austinmarton
1
Wydaje się również, że nie działa w Xterm 322 lub konsoli 16.12 ... Nie wiem, czy istnieje nowa metoda, niestety :(
naught101
2
@ 3ocene faktycznie nie ma znaczenia w tym przypadku są to samo, ale jest to dobry zwyczaj, aby dostać się, bo na przykład $var_logi ${var}_logsą bardzo różne rzeczy, a różnica może powodować błędy w skryptach.
naught101
2
jeśli to nie działa, prawdopodobnie jest to spowodowane tym, że PROMPT_COMMAND var lub PS1 var jest ustawiony i go przerasta. unset PROMPT_COMMANDlub ustaw go tak, aby zmieniał także tytuł, np. export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
gaoithe
32

Jeśli używasz edytora Vim, możesz również włączyć tę opcję w swoim vimrc:

:set title

który jest domyślnie wyłączony. Ustawi fajne tytuły terminali pokazujące nazwę pliku, który edytujesz w tej chwili i kilka innych rzeczy.

ulidtko
źródło
26

Dla kompletności dodam, że można również ustawić gnome-terminaltytuł za pomocą tego polecenia:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

Najpierw musisz zainstalować pakiet wmctrlZainstaluj wmctrl .

Izajasza
źródło
1
MyWindowTitle nie pojawia się w tytule terminala. Pokazuje się, kiedy robię wmctrl -m.
sureshvv
2
Zauważ, że wmctrl zmienia tytuł okna, a nie tytuł karty, podczas gdy rozwiązanie znaków specjalnych zmienia tytuł karty. Ponadto tytuł okna zmienia się z powrotem na oryginalny tytuł karty, gdy tylko przełączasz się między kartami.
redochka
23

Argh, tyle odpowiedzi ...

Próbowałem wmctrl, co prawie działało, ale nie udało mi się zmienić tytułu ikony, przynajmniej nie na stałe.

Problem polega na tym, że PS1 w Bash w Ubuntu ustawia tytuł.

Domyślny PS1 to

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 

... która ustawia tytuł w pierwszej sekwencji ucieczki: \e]0;\u@\h: \w\a

Istnieją zatem dwa rozwiązania:

Rozwiązanie 1: uprość PS1, a następnie użyj PROMPT_COMMAND

Zmień PS1 na coś prostszego:

PS1="\u@\h:\w\$ "

Następnie użyj PROMPT_COMMAND:

PROMPT_COMMAND='echo -ne "\033]0;SOME TITLE HERE\007"'

Rozwiązanie 2: bezpośrednio zmodyfikuj PS1

Po prostu zmodyfikuj PS1 nowym tytułem:

PS1='\[\e]0;newtitle\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '
Hugh Perkins
źródło
cześć, bardzo podoba mi się twoja odpowiedź. Czy mógłbyś wyjaśnić rolę ]0;swojego kodu? Myślę, że znalazłem sens echo -e '\007 \033'z ascii -opolecenia ... choć szczerze nie jestem pewien, co to robi tam albo ... dzięki ...
isomorphismes
2
@iso \elub \033jest znakiem ucieczki (ESC), który rozpoczyna sekwencję zmiany znaczenia. ]uruchamia polecenie systemu operacyjnego (OSC). Dla xtermu 0;oznacza „ustaw tytuł” ​​i \alub \007jest znakiem dzwonka (BEL), który kończy OSC. Więcej informacji: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea
@wjandrea Szukałem równoważnych liter ewakuacyjnych ( \ei \a) dla \033i \007, ale nie mogłem znaleźć je na pewno, bo nie znał odpowiednich słów kluczowych, aby wpisać w google. Przydany link jest również przydatny. Czy możesz przekształcić swój komentarz w odpowiedź?
SebMa
10

Jeśli jesteś użytkownikiem Ubuntu, możesz zmienić tytuł karty terminalu gnome za pomocą HUD .

Będąc na terminalu gnome, naciśnij Alt, aby wyświetlić HUD, wpisz kilka pierwszych liter, np. „Tit”, naciśnij enter i wpisz nowy tytuł.

Jest to bardzo szybka metoda i pozwala uniknąć używania myszy.

Tomek
źródło
1
W rzeczy samej. Trzyma ręce na klawiaturze. Wyświetlany jest istniejący tytuł, więc można szybko i łatwo zmodyfikować istniejący za pomocą tej metody.
Brent Faust,
tit jest tylko dla angielskiego Ubuntu.
törzsmókus
i cała opcja została usunięta :(
törzsmókus
F2klucz unika również myszy.
izomorfizmy
@ törzsmókus And French - titre ;)
wjandrea
3

Innym sposobem zmiany tytułu gnome-terminaljest użycie gconftool-2; zmienia to początkowy tytuł terminalu dla wybranego profilu , więc możesz mieć różne profile powiązane z tytułami takimi jak „Apache”, „Edycja” itp. Następnie uruchomisz gnome-terminalz odpowiednim profilem, aby uzyskać określony tytuł terminalu. Jest to w przeciwieństwie do tego, gnome-terminal --title "name"który zmienia tytuł dla terminala, ale nie wpływa na początkowy tytuł określony w profilu.

Możesz użyć następującego polecenia w skrypcie, aby ustawić nazwę terminala dla profilu, i możesz zmienić nazwę terminala w określonych porach dnia, aby przypominać ci o rzeczach:

gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "Apache"

Dotyczy to profilu domyślnego, ale możesz również ustawić tytuł dla innych profili, zmieniając na przykład Defaultinny profil, taki jak Profile0:

gconftool-2 --set /apps/gnome-terminal/profiles/Profile0/title --type=string "Editing"

Myślałem, że ten sposób zmiany tytułu jest użyteczny ze względu na sposób, w jaki można go użyć w skryptach, lub po prostu jako szybki sposób wiersza polecenia do ustawienia tytułu profilu. Pamiętaj, że czasami musisz ponownie uruchomić terminal z określonym profilem, aby gconftool-2ustawienie miało wpływ. Pełne dostępne ustawienia gnome-terminalmożna wymienić za pomocą gconftool-2 -R /apps/gnome-terminal.


źródło
3

Innym rozwiązaniem jest użycie xdotool do symulacji naciśnięć klawiszy, być może przydatne w skryptach:

  1. Ustaw skrót klawiaturowy w gnome-terminal:

    Edit > Keyboard Shortcuts... > Terminal > Set Title
    

    Na przykład zakładając Shift+Ctrl+Y.

  2. Zainstaluj, xdotooljeśli jeszcze go nie masz:

    sudo apt-get install xdotool
    
  3. Poniższa sekwencja poleceń (których możesz użyć również w skrypcie bash) ustawi tytuł terminalu / tabulacji (unikaj spacji \):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [opcjonalnie] Możesz także użyć xdotool, aby np. otworzyć nową kartę i ustawić tytuł za pomocą powyższych poleceń, używając:

    xdotool key ctrl+shift+t
    

    Rozważ dodanie czasu snu przed i po otwarciu nowej karty, np. sleep 1(Aby poczekać 1 sekundę).

To nie jest najbardziej eleganckie rozwiązanie, ale zadziałało dla mnie! Poprzednie odpowiedzi nie działały w moim przypadku. Używam gnome-terminal w Ubuntu 14.04 i chciałem napisać skrypt bash.

MakisH
źródło
1

Aby wyświetlić tylko bieżący katalog roboczy w tytule, wypróbuj to w swoim „.bashrc”:

PROMPT_COMMAND='echo -ne "\033]0; ${PWD##*/}\007"'

lub

PROMPT_COMMAND='echo -ne "\033]0;$(basename ${PWD})\007"' 
Sriram
źródło
0

To zadziałało w moim terminalu Gnome 3.18.3 .

Edytuj plik .bashrc i dodaj tę funkcję

# Update gnome terminal title
function termtitle() {
    # take argument
    TITLE=$1
    shift
    # update title
    PROMPT_COMMAND='echo -ne "\033]0; $TITLE \007"'
}

Nie zapomnij o sourceswoim .bashrc pliku

$ source ~/.bashrc

A potem możesz po prostu zaktualizować, będziesz mógł zmienić tytuł terminala w następujący sposób:

$ termtitle "MariaDB CLI"
RousseauAlexandre
źródło
0

Moja odpowiedź jest podobna do nowszej, która nie zadziałała. Najstarsze odpowiedzi już nie działają. Środkowa stara odpowiedź to zbyt dużo pisania, więc utworzyłem funkcję w moim ~/.bashrcpliku:

function termtitle() { PS1="${PS1/\\u@\\h: \\w/$@}"; }

Po dodaniu lub zmianie funkcji lub, jeśli chcesz zresetować tytuł po raz drugi, użyj:

. ~/.bashrc
termtitle Special Projects

W przeciwnym razie codziennie korzystaj termtitlez nowego tytułu.

WinEunuuchs2Unix
źródło
-1

Jeśli jakieś biedne dusze, takie jak ja, będą zmuszone używać tcsh, spróbuj czegoś takiego w swoim .cshrc:

set prompt='%{\033]0;%n@%m\007%}%~%# '

Źródło i więcej szczegółów: http://tldp.org/HOWTO/Xterm-Title-4.html

spookypeanut
źródło
Byłoby miło wskazać, dlaczego moja odpowiedź została odrzucona :-(
spookypeanut
-1

Jeśli używasz gnome 3, wygodna Terminal > Set Titleopcja menu została usunięta. Możesz zainstalować rozwidlony terminal gnome 2, który wciąż ma tę opcję menu „Ustaw tytuł”, i zamiast tego uruchomić:

sudo apt-get install mate-terminal

Zamiast uruchamiać „Terminal”, uruchom „MATE Terminal”. Prawdopodobnie powinieneś także wybrać mate-terminal w sudo update-alternatives --config x-terminal-emulator.

JDiMatteo
źródło