Nowa instalacja Ubuntu 15.04: Nie można zmienić nazw kart gnome-terminal

38

W Ubuntu 14.10, gdybym miał otwartych wiele kart terminalu, mógłbym kliknąć kartę terminalu prawym przyciskiem myszy i zmienić jej nazwę. W Ubuntu 15.04 nie mogę znaleźć tej funkcji.

Czy istnieje prosty sposób na odzyskanie go?

To jest aktualna wersja:

$ gnome-terminal --version
GNOME Terminal 3.14.2
Tomek
źródło

Odpowiedzi:

21

Odpowiedziałem tutaj

Cytuję:

user titleKod został usunięty 1 od gnome-terminal 3.14. Jest tylko jeden sposób ustawienia tytułu za pomocą sekwencji ucieczki - np. Z bash:

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

1: patrz błąd gnome 724110 i błąd gnome 740188 .

AB
źródło
10
Dziękuję za odpowiedź. Szkoda, że ​​już go nie ma, mam nadzieję, że dodadzą go z powrotem w następnym wydaniu, tymczasem użyję sekwencji ucieczki zamiast metody kliknięcia prawym przyciskiem myszy.
Tom
2
@Tom Napisz raport o błędzie =)
AB
13
to nie tylko wstyd: to nie ma sensu. Miałem zły pomysł, aby „uaktualnić” z Debian Wheezy do Jessie, aby mieć wszystko (jeszcze nie jestem pewien), ale miałem gorzej; złe decyzje i głupie wady (np. w gdm3 lista możliwych zainstalowanych wm / sesji nie mieści się ani nie przewija, więc jest prosta i dlatego nie mogę wybrać wszystkich wm, które mam). Dla mnie GNOME jest skazane na później gnome-shell. Zniknęło także menu otwierające nowy terminal w nowym oknie lub zakładce (ale nadal możesz to zrobić za pomocą skrótu. Dlaczego ?! Zamień wszystko na duży inteligentny przycisk: kliknięcie i robi wszystko!)
ShinTakezou
2
Zwykle nowe wersje dodają, a nie usuwają funkcje.
angelcervera
2
Zrobiłem polecenie (skrypt powłoki) o nazwie tab, które zawiera po prostu echo -ne "\ 033] 0; $ 1 \ 007", więc teraz na dowolnej karcie mogę po prostu uruchomić tab TABNAME, aby ustawić tytuł tabulacji. Nie tak wygodne, jak kliknięcie karty prawym przyciskiem myszy, aby zmienić nazwę, ale na razie wystarczy. Dzięki AB!
Brian Pipa
31

.bashrcRozwiązanie proponowane przez Kirby pracował dla mnie:

set-title(){
  ORIG=$PS1
  TITLE="\e]2;$@\a"
  PS1=${ORIG}${TITLE}
}

następnie z mojego monitu: $ set-title test-title

ronan_mac
źródło
2
Działa dla mnie dobrze w 15.10, jedynym zastrzeżeniem jest to, że za każdym razem, gdy go uruchamiasz, dołączasz do PS1, więc nie rób tego ze skryptu. Po tym, jak zadzwoniłem kilka razy z set-title "longer and ":echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
ahcox
1
działa dla mnie na Ubuntu 16.04!
Programster
1
działa jak urok !!
sharadendu sinha
Jak zmienić tytuł, gdy uruchomiony jest proces pierwszego planu, którego nie chcę przerywać?
Jānis Elmeris
1
Myślę, że możesz to zrobić, wstrzymując proces za pomocą Control + Z, a następnie set-title X, fgaby wznowić proces.
ronan_mac
18

Nie mogę uwierzyć, że usunęli taką przyjazną dla użytkownika funkcję, taką jak ta.

Przechodzę na ROXTerm ( http://roxterm.sourceforge.net ), który działa dobrze. Jest pakowany w Ubuntu:

sudo apt-get install roxterm

Następnie pozwól dinozaurowi iść własną drogą ;-)

Michael Opdenacker
źródło
1
Jak mogę zmienić tytuł karty w roxterm? Nie mogłem tego znaleźć.
Halil
będzie działać również dla 16.04
prusswan
Wow, nie mogę ustawić terminala jako tła z terminalem gnome i nigdy nie zrozumiałem, dlaczego ... to problem z samym terminalem. Tło terminalu devilspie działa świetnie z Roxterm.
erm3nda
1
RoxTerm jest niesamowity i nadal działa, ale niestety nie będzie kontynuowany dłużej: sadface:: sourceforge.net/p/roxterm/discussion/422638/thread/60da6975
Williams
Od tego czasu przełączyłem się na Terminator i nie musiałem już używać RoxTerm ....
Michael Opdenacker
14

Wypróbowałem RoxTerm jak sugerowałem powyżej, z dobrymi wynikami. Ale zdecydowałem się na terminal MATE, który jest częścią projektu MATE, będącego kontynuacją Gnome 2, 15.04:

sudo apt-get install mate-terminal

Ten terminal jest oparty na kodzie Gnome Terminal.


Komentarz: Trudno jest zrozumieć sposób myślenia deweloperów Gnome Terminal. Dużo się tam dyskutuje na temat „jak” nazwać karty terminali i jak trudno jest to naprawić. Jeśli tak, to dlaczego utrudniasz użytkownikowi ich nazwanie? Niezbyt mądry.

Doug Van Horn
źródło
6

Teraz badałem to przez większą część dnia i wreszcie znalazłem sposób na ustawienie tego tytułu. Odbywa się to poprzez sekwencje specjalne rozpoczynające się od \ e] 0; i zakończ znakiem BEL (= \ 007 = \ a). W przeciwieństwie do tego, co powiedziałem powyżej, komunikacja z powłoki z powrotem do aplikacji terminalowej jest możliwa, bardzo ograniczona, dzięki takim sekwencjom ucieczki (jest ich jeszcze kilka).

O tym z góry:

PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'

To może działać, ale nie zawsze. PROMPT_COMMANDjest zmienną, której zawartość jest wykonywana za każdym razem, gdy wysyłasz polecenie, więc wysyła również tę sekwencję zmiany znaczenia. Można to jednak zastąpić sekwencją zmiany znaczenia w zmiennej PS1, która ustawia wiersz poleceń. Dlatego powyższe nie miało tutaj żadnego wpływu.

Ze starszej instalacji Ubuntu wziąłem to, co ustawia wiersz polecenia (prawa część, po ]) i wysyła również wymaganą sekwencję zmiany znaczenia (lewa część, do włącznie ]):

PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "

Prawdopodobnie działa to lepiej, ponieważ nie trzeba za $PROMPT_COMMANDkażdym razem interpretować . Ma także wiele innych opcji, ponieważ Bash ma tutaj więcej sekwencji specjalnych, np. \uDla bieżącej nazwy użytkownika, \Wdla bieżącej nazwy katalogu lub \wdla całej ścieżki bieżącego katalogu roboczego, opcjonalnie przycinanych do ostatnich kilku według liczby w $PROMPT_DIRTRIM. Zobacz rozdział PROMPTINGna stronie podręcznika użytkownika Bash. Zwróć także uwagę, że sekwencja ucieczki musi być dodatkowo otoczona przez \[i \]tutaj.

Aby ustawić stały tytuł, działa to:

PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "

Cieszyć się!


Podczas mojego dochodzenia próbowałem również zrozumieć kod źródłowy terminala gnome, co prowadzi do kodu źródłowego vte, i tam wsparcie dla ustawiania tytułu i czytania sekwencji ucieczki jest uważane za zagrożenie bezpieczeństwa: patrz tutaj (przypadek 20, przypadek 21) i tutaj („Raportowanie tytułu okna”).

Traumflug
źródło
To ustawia tytuł, ale także usuwa wszelkie poprzednie definicje PS1innych zastosowań, takich jak ustawienie niestandardowego wiersza polecenia. Właśnie próbowałem dodać sekwencję zmiany znaczenia do istniejącej PS1zawartości i wydaje się, że działa. W ten sposób: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
ahcox
5

Ustawienie $ PROMPT_COMMAND jak pokazano powyżej ma tutaj zerowy efekt. Nic dziwnego, ponieważ Bash działa wewnątrz terminala, a procesy nadrzędne (tutaj: gnome-terminal) nie mogą odczytać środowiska dziecka w systemie operacyjnym typu unix. Używanie czegoś prostszego, na przykład

PROMPT_COMMAND='echo bla'

Wykonuje echo bla , nic innego się nie dzieje.

Edycja: trzeba zawinąć to w sekwencje specjalne, zobacz moją drugą odpowiedź. Mimo że czytanie dziecięcego środowiska nie jest możliwe, komunikacja z rodzicem odbywa się poprzez te sekwencje.

W błędzie Gnome 740188 mówią o zdefiniowaniu funkcji title () w .bashrc. Inny dla każdej otwartej karty? Ciężkie brzydkie hakowanie, jeśli to możliwe!

Nawet inne objaśnienia na temat Stackexchange mówią o ustawieniu $ PS1 (i bądź pozytywnie oceniany). Niestety nie, to nie jest tytuł, to wiersz polecenia.

W skrócie: zawiedli to nie do naprawienia, aby zaoszczędzić trochę miejsca w oknie dialogowym preferencji. o mój Boże

Teraz jedyną szansą na cofnięcie decyzji programisty jest rozpalenie poważnej burzy, w przeciwnym razie po prostu zamkną twój raport o błędach w kilka sekund (wiele razy próbowałem wiele razy). Jak moglibyśmy stworzyć tę gówno?

Traumflug
źródło