Câu trả lời:
Đã trả lời ở đây
Tôi trích dẫn:
Các
user title
mã đã được loại bỏ 1 từgnome-terminal 3.14
. Chỉ có một cách để đặt tiêu đề, sử dụng chuỗi thoát - ví dụbash
:PROMPT_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'
gnome-shell
. Nó cũng biến mất menu để mở một thiết bị đầu cuối mới trong một cửa sổ hoặc tab mới (nhưng bạn vẫn có thể làm điều đó thông qua phím tắt. Tại sao?! Thay thế mọi thứ bằng một nút thông minh lớn: một cú nhấp chuột và nó làm bất cứ điều gì!)
Các .bashrc
giải pháp của Kirby đề nghị làm việc cho tôi:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}
sau đó từ lời nhắc của tôi: $ set-title test-title
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
Control + Z
, sau đó set-title X
, sau đó fg
tiếp tục quá trình.
Tôi không thể tin rằng họ đã loại bỏ một tính năng thân thiện với người dùng như thế này.
Tôi đang chuyển sang ROXTerm ( http://roxterm.sourceforge.net ), công việc này rất tốt. Nó được đóng gói trong Ubuntu:
sudo apt-get install roxterm
Sau đó, hãy để con khủng long tiếp tục con đường của riêng mình ;-)
Tôi đã thử RoxTerm như đề xuất ở trên, với kết quả tốt. Nhưng tôi đã giải quyết trên MATE Terminal, một phần của Dự án MATE, phần tiếp theo của Gnome 2, vào ngày 15.04:
sudo apt-get install mate-terminal
Thiết bị đầu cuối đó dựa trên mã Gnome Terminal.
Bình luận: Thật khó để hiểu được suy nghĩ của các nhà phát triển Gnome Terminal. Có rất nhiều cuộc thảo luận ở đó về "làm thế nào" để đặt tên cho các tab thiết bị đầu cuối và mức độ khó để làm đúng. Nếu đó là lý do, tại sao làm cho người dùng khó đặt tên chúng hơn? Không thông minh chút nào.
Bây giờ tôi đã điều tra điều này cho phần tốt hơn của một ngày và cuối cùng đã tìm ra cách để đặt tiêu đề này. Nó được thực hiện thông qua các chuỗi thoát bắt đầu bằng \ e] 0; và kết thúc bằng ký tự BEL (= \ 007 = \ a). Không giống như tôi đã nêu ở trên, thông tin liên lạc từ shell trở lại ứng dụng đầu cuối là có thể, rất hạn chế, thông qua các chuỗi thoát như vậy (có một vài điều nữa).
Về điều này từ phía trên:
PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'
Nó có thể hoạt động, nhưng không phải lúc nào cũng vậy. PROMPT_COMMAND
là một biến mà nội dung được thực thi mỗi khi bạn gửi lệnh, vì vậy nó cũng gửi chuỗi thoát này. Tuy nhiên, điều này có thể được ghi đè bằng một chuỗi thoát trong biến PS1, thiết lập dấu nhắc dòng lệnh. Đây là lý do tại sao ở trên không có hiệu lực ở đây.
Từ một bản cài đặt Ubuntu cũ hơn, tôi đã lấy cái này, nó đặt dấu nhắc lệnh (phần bên phải, sau phần ]
) và cũng gửi chuỗi thoát cần thiết (phần bên trái, lên đến và bao gồm cả ]
):
PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "
Điều này có khả năng thực hiện tốt hơn, bởi vì không cần phải giải thích $PROMPT_COMMAND
mỗi lần. Nó cũng có nhiều tùy chọn hơn, bởi vì Bash có nhiều chuỗi thoát ở đây, ví dụ như \u
tên người dùng hiện tại, \W
cho tên thư mục hiện tại hoặc \w
cho toàn bộ đường dẫn của thư mục làm việc hiện tại, tùy ý cắt bớt chỉ một vài số cuối cùng $PROMPT_DIRTRIM
. Xem chương PROMPTING
trong trang người đàn ông Bash. Cũng lưu ý rằng trình tự thoát còn được bao quanh \[
và \]
ở đây.
Để đặt tiêu đề cố định, công việc này:
PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
Thưởng thức!
Trong quá trình điều tra, tôi cũng đã cố gắng tìm hiểu mã nguồn gnome-terminal, dẫn đến mã nguồn vte và việc hỗ trợ cài đặt tiêu đề và đọc các chuỗi thoát được coi là rủi ro bảo mật: Xem tại đây (trường hợp 20, trường hợp 21) và tại đây ("Báo cáo tiêu đề cửa sổ").
PS1
cho các mục đích sử dụng khác, chẳng hạn như đặt dấu nhắc lệnh tùy chỉnh. Tôi vừa thử thêm chuỗi thoát của bạn vào PS1
nội dung hiện có và nó dường như hoạt động. Như thế này: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
Đặt $ PROMPT_COMMAND như được hiển thị ở trên không có hiệu lực ở đây. Không có gì ngạc nhiên, vì Bash chạy bên trong các tiến trình đầu cuối và cha mẹ (ở đây: gnome-terminal) không thể đọc môi trường của một đứa trẻ trên một hệ điều hành giống như không trộn lẫn. Sử dụng một cái gì đó đơn giản hơn, như
PROMPT_COMMAND='echo bla'
Thực hiện tiếng vang bla , không có gì khác xảy ra.
Chỉnh sửa: người ta phải bọc cái này trong chuỗi thoát, xem câu trả lời khác của tôi. Mặc dù đọc môi trường trẻ em là không thể, một số giao tiếp trở lại với cha mẹ, thông qua các trình tự này.
Trong lỗi Gnome 740188, họ nói về việc xác định hàm title () trong .bashrc. Một cái khác nhau cho mỗi tab được mở? Hack xấu xí nghiêm trọng phía trước, nếu có thể!
Ngay cả những lời giải thích khác trên Stackexchange cũng nói về việc thiết lập $ PS1 (và được nâng cấp). Xin lỗi, không, đó không phải là tiêu đề, đó là dấu nhắc lệnh.
Nói tóm lại: họ đã làm hỏng nó ngoài việc sửa chữa để tiết kiệm một chút không gian trong hộp thoại tùy chọn. Chúa ơi
Bây giờ, cơ hội duy nhất để có được quyết định của nhà phát triển được hoàn nguyên là xử lý một cơn bão nghiêm trọng, nếu không họ chỉ cần đóng báo cáo lỗi của bạn trong vài giây (đã thử nhiều lần). Làm thế nào chúng ta sẽ tạo ra shitstorm này?