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_COMMAND
jest 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_COMMAND
każdym razem interpretować . Ma także wiele innych opcji, ponieważ Bash ma tutaj więcej sekwencji specjalnych, np. \u
Dla bieżącej nazwy użytkownika, \W
dla bieżącej nazwy katalogu lub \w
dla całej ścieżki bieżącego katalogu roboczego, opcjonalnie przycinanych do ostatnich kilku według liczby w $PROMPT_DIRTRIM
. Zobacz rozdział PROMPTING
na 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”).