Як змінити назву Gnome-Terminal?


165

У мене є кілька екземплярів терміналів, що працюють в моєму робочому середовищі. Я хотів би встановити конкретний заголовок для кожного з них, щоб мати чітке уявлення, якою метою служить конкретний термінал, наприклад Apache, editing_ini, postgres тощо ...

Звичайно з командного рядка.


На додаток до коментаря Уорда: Не забудьте "зняти PROMPT_COMMAND" перед тим, як надіслати послідовну послідовність зміни заголовка, інакше будь-які внесені вами зміни будуть втрачені, як тільки з'явиться наступний запит оболонки.
Джон Грін

Для подібного питання для KDE см stackoverflow.com/questions/8782159 / ...
naught101

У мене виникла ця проблема при переході з OS X на Ubuntu. Щоб отримати власні заголовки в налаштуваннях з декількома вкладками, я використав gnome-terminal --load-configразом із написаним сценарієм .
півзахисник

3
додайте наступні файли .bashrc у своєму домашньому режимі, # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleтепер ви можете використовувати псевдонім termttl для встановлення заголовка, наприкладtermttl askubuntu
urmalp

1
"Захищений", тому я не можу надати відповідь. За gnome-terminalзамовчуванням Gnome3 є PROMPT_COMMAND=__vte_prompt_command. Для цього використовуються значення з профілів у префіксах. Коли існує декілька профілів, елементи меню Нова вкладка та Нове вікно мають пункт підменю для кожного профілю. Ручний спосіб, щоб відкрити нову вкладку терміналу, натисніть праву кнопку миші на заголовку вкладки і виберіть Встановити назву ... . (Це було б набагато легше читати в окремій відповіді, але ...)
Багатий

Відповіді:


145
  • Найзручніший спосіб - це вибрати його з меню Термінал -> "Встановити заголовок ...".

  • Є й інші способи, однак їх також можна оформити

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

    Це може не дати бажаного ефекту, оскільки є велика ймовірність, що ваша .bashrcповедінка буде перезаписана.

  • Підведення нас до останнього методу, який я безсоромно вирвав із свого .bashrc.

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

Як додатковий довідник, це конкретний рядок у моєму .bashrc

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

Вам також може знадобитися прокоментувати цей код у своєму ~ / .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

2
Потрібно прокоментувати або видалити, як ви згадали, щоб набути чинності!
топлес

1
@ Ward: PROMPT_COMMANDце програма, яку потрібно запустити. PS1і PS1це текстові рядки , які відображаються. У наведеному вище прикладі виконується команда echo, яка потім просто виводить рядок. Див. man bashАбо manpages.ubuntu.com/bash для отримання більш детальної інформації.
sladen

29
Термінал GNOME 3.16.2 повідомляєOption "--title" is no longer supported in this version of gnome-terminal.
Іван Козик

10
У Gnome 3.18.3 в меню немає запису «Встановити заголовок»: /
shadi

2
Для всіх, хто їх плутає гобблдегук у рядках вище, вони є символами втечі ANSI - див., Наприклад, lihaoyi.com/post/…
WillC

65

Відповідь Уорда чудова, якщо ви хочете встановити свою назву залежно від того, на якому хості ви знаходитесь тощо, кожного разу, коли ви відкриваєте термінал. Якщо ви хочете швидко встановити заголовок, ви можете просто запустити echo:

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

або зробіть просту функцію (всередині вашого ~/.bashrc), скажімоtermtitle

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

з яким можна запустити termtitle some title here.


3
або аналогічно ми можемо додати псевдонім bash, додавши нижче рядки в ~ / .bash_aliases, function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titleа потім використати: $ title term_title
murarisumit

11
На жаль, здається, для мене це не працює в терміналі GNOME 3.6.2.
austinmarton

1
Також, здається, не працює в xterm 322 або konsole 16.12 ... Я не знаю, чи є новий метод, на жаль :(
naught101

2
@ 3ocene це на самому справі не має значення в даному випадку, вони те ж саме, але це хороша звичка, тому що , наприклад , $var_logі ${var}_logце дуже різні речі, і різниця може викликати помилки в скриптах.
naught101

2
якщо це не працює для вас, це, мабуть, встановлено PROMPT_COMMAND var або PS1 var і перевантажує його. unset PROMPT_COMMANDабо встановіть його так, щоб він також export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
міняв

32

Якщо ви використовуєте редактор Vim, ви також можете включити цей параметр у своєму vimrc:

:set title

який вимкнено за замовчуванням. Він встановить круті заголовки терміналів із зазначенням назви файла, яке ви редагуєте в даний момент, та деяких інших речей.


26

Для повноти я додам, що ви також можете встановити gnome-terminalзаголовок за допомогою цієї команди:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

Вам потрібно спочатку встановити пакет wmctrlВстановити wmctrl .


1
MyWindowTitle не відображається в назві терміналу. Він з’являється, коли я роблю wmctrl -m.
sureshvv

2
Зауважте, що wmctrl змінює заголовок вікна, а не заголовок вкладки, тоді як рішення, що втік символів, змінює назву вкладки. Крім того, заголовок вікна повернеться до початкового заголовка, як тільки ви переходите між вкладками.
редочка

23

Аргу, так багато відповідей ...

Я спробував wmctrl, що майже спрацювало, за винятком того, що я не міг змусити його змінити назву іконки, принаймні не назавжди.

Проблема полягає в тому, що PS1 в Bash в Ubuntu встановлює заголовок.

PS1 за замовчуванням -

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

... який встановлює заголовок у першій послідовності втечі: \e]0;\u@\h: \w\a

Таким чином, існує два рішення:

Рішення 1: спростіть PS1, а потім використовуйте PROMPT_COMMAND

Змініть PS1 на щось простіше:

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

Потім використовуйте PROMPT_COMMAND:

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

Рішення 2: безпосередньо змінити PS1

Просто змініть PS1 новим заголовком:

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

привіт, мені дуже подобається ваша відповідь. Ви б не хотіли пояснити роль ]0;у своєму коді? Я думаю, що я знайшов сенс у echo -e '\007 \033'цій ascii -oкоманді ... хоча я правдиво не впевнений, що там теж робиться ... дякую ...
isomorphismes

2
@iso \eабо символ \033втечі (ESC), який запускає послідовність втечі. ]запускає команду операційної системи (OSC). Для xterm 0;означає "встановити заголовок", \aабо або \007символ дзвоника (BEL), який припиняє OSC. Більше інформації: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea

@wjandrea Я шукав еквівалентні евакуаційні букви ( \eі \a) для \033і , \007але я не міг знайти їх , звичайно , тому що я не знаю правильні ключові слова , щоб надрукувати в Google. Посилання, яке ви надали, також корисне. Чи можете ви перетворити ваш коментар у відповідь?
SebMa

10

Якщо ви користувач Ubuntu, ви можете змінити назву вкладки gnome-terminal за допомогою HUD .

Перебуваючи в терміналі gnome, натисніть клавішу Alt, щоб відобразити HUD, введіть перші кілька літер, наприклад "tit", натисніть клавішу enter і введіть новий заголовок.

Це дуже швидкий метод і дозволяє уникнути використання миші.


1
Справді. Тримає руки на клавіатурі. Відображається існуючий заголовок, тому швидко та легко також просто змінити існуючий за допомогою цього методу.
Brent Faust

tit призначений лише для англійської Ubuntu.
törzsmókus

і весь варіант видалено :(
törzsmókus

F2ключ також дозволяє уникнути миші.
ізоморфізми

@ törzsmókus І французька - titre ;)
wjandrea

3

Ще один спосіб зміни назви gnome-terminal- за допомогою використання gconftool-2; це змінює початковий заголовок терміналу для вибраного профілю , так що у вас можуть бути різні профілі, пов’язані з заголовками, такими як "Apache", "Редагування" тощо. Потім ви запускаєте gnome-terminalвідповідний профіль, щоб отримати вказаний вами термінал. Це на відміну від того, gnome-terminal --title "name"що змінює заголовок на термінал, але не впливає на початковий заголовок, вказаний у профілі.

Ви можете використати таку команду в скрипті, щоб встановити ім'я терміналу для профілю, і ви могли мати ім'я зміни терміналу в певний час дня, щоб нагадувати про речі:

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

Це для профілю за замовчуванням, але ви можете встановити заголовок для інших профілів, змінивши, наприклад, Defaultінший профіль, наприклад Profile0:

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

Я вважав, що такий спосіб зміни заголовка корисний через те, як він може бути використаний у сценаріях, або просто як швидкий спосіб командного рядка встановити заголовок профілю. Зауважте, що іноді вам доведеться перезапустити термінал із заданим профілем, щоб gconftool-2налаштування впливало. Повний список доступних параметрів gnome-terminalможна переглянути gconftool-2 -R /apps/gnome-terminal.


3

Іншим рішенням є використання xdotool для імітації натискань клавіш, можливо, корисно в сценаріях:

  1. Встановлення комбінації клавіш у gnome-терміналі:

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

    Наприклад, припускаючи Shift+Ctrl+Y.

  2. Встановіть, xdotoolякщо у вас його ще немає:

    sudo apt-get install xdotool
    
  3. Наступна послідовність команд (яку ви також можете використовувати в скрипті bash) встановить заголовок термінала / вкладки (виберіть пробіли з \ ):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [необов'язково] Ви також можете використовувати xdotool, наприклад, щоб відкрити нову вкладку та встановити заголовок за вказаними вище командами, використовуючи:

    xdotool key ctrl+shift+t
    

    Розгляньте можливість додати час сну до та після відкриття нової вкладки, наприклад sleep 1(зачекати 1 секунду).

Це не найелегантніше рішення, але воно працювало для мене! Попередні відповіді не спрацювали в моєму випадку. Я використовую gnome-термінал в Ubuntu 14.04 і хотів зробити скрипт bash.


1

Щоб відобразити в заголовку лише поточний робочий каталог, спробуйте це у своєму ".bashrc":

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

або

PROMPT_COMMAND='echo -ne "\033]0;$(basename ${PWD})\007"' 

0

Це працювало в моєму терміналі Gnome 3.18.3 .

Відредагуйте .bashrc файл та додайте цю функцію

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

Не забудьте про sourceсвій .bashrc файл

$ source ~/.bashrc

І тоді ви можете просто оновити, ви зможете змінити назву терміналу так:

$ termtitle "MariaDB CLI"

0

Моя відповідь схожа на більш нову відповідь, яка не працювала для мене. Найдавніші відповіді більше не діють. Середня стара відповідь занадто багато введена, тому я створив функцію у своєму ~/.bashrcфайлі:

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

Після додавання або зміни функції або, якщо ви хочете повторно скинути заголовок, використовуйте:

. ~/.bashrc
termtitle Special Projects

Інакше щодня просто користуйтеся termtitleновою назвою.


-1

Якщо будь-які бідні душі, як я, змушені використовувати tcsh, спробуйте щось подібне у вашому .cshrc:

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

Джерело та додаткові відомості: http://tldp.org/HOWTO/Xterm-Title-4.html


Деякі вказівки, чому мою відповідь було проголошено, було б добре :-(
spookypeanut

-1

Якщо ви використовуєте gnome 3, зручну Terminal > Set Titleопцію меню було видалено. Ви можете встановити роздвоєний термінал gnome 2, у якому все ще є параметр меню "Встановити заголовок", і запустити його замість цього:

sudo apt-get install mate-terminal

Замість запуску "Terminal" запустіть "MATE Terminal". Напевно, ви також повинні вибрати мате-термінал в sudo update-alternatives --config x-terminal-emulator.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.