web-dev-qa-db-ja.com

ターミネーターのタイトル、ターミナルのタイトル、DebianのZSHを変更するには?

私がここでそれを尋ねるべきか、unix.stackexchange.comでそれを尋ねるべきかわかりません、私は この質問はここ を見つけました。

私の質問も同様です。ターミナルのタイトルを変更したいのですが、Debianベースのディストリビューション、ターミネーター、ZSHを使用しています。oh-my-zshタイトルはbashで問題ありませんでしたが、ZSHに移動すると_/bin/zsh_タイトルとして。

14
Lynob

Xtemエスケープシーケンスを使用してウィンドウタイトルを設定します。ほとんどの実装では、最初のものが最もよく機能します。

echo -en "\e]0;string\a" #-- Set icon name and window title to string
echo -en "\e]1;string\a" #-- Set icon name to string
echo -en "\e]2;string\a" #-- Set window title to string

編集:上記はタイトルを1回だけ設定します。タイトルに常に文字列を表示するようにzshを設定するには、ホームディレクトリの.zprofileに以下を追加します。

case $TERM in
    xterm*)
        precmd () {print -Pn "\e]0;string\a"}
        ;;
esac
13

以下はgnome-terminalの各タブの名前を変更するのに役立ちました。 〜/ .zshrcファイルに次のコードを追加しました。

precmd () { print -Pn "\e]0;$TITLE\a" }
title() { export TITLE="$*" }

これにより、各タブの名前を変更するtitle関数が作成されます。

注:oh-my-zshを使用している場合は、自動タイトルコマンドを無効にする必要があります。 〜/ .zshrcファイルでこの行のコメントを外すことでそれを行うことができます:

DISABLE_AUTO_TITLE="true"
13
Steve

これは、使用するシェルに関係なく機能するはずです。

printf "\033];%s\07\n" "hello world"
4
jlliagre

以前の答えは私にとってはうまくいきませんでした。しゃっくりがないわけではありません(常に更新されるわけではありません)。 oh-my-zshなしでZSHを使用していたことが原因である可能性があります。幸い、私はchpwdについて知ったので、

chpwd() {
  [[ -t 1 ]] || return
  case $TERM in
    Sun-cmd) print -Pn "\e]l%~\e\\"
      ;;
    *xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;%~\a"
      ;;
  esac
}
  1. chpwdは、ディレクトリが変更されるたびに呼び出されます。
  2. xterm(またはその他)を初めて起動したとき、これはディレクトリの変更としてはカウントされないため、chpwd呼び出しを直接.zshrc

私はoh-my-zshを使用しないので、そこで機能するかどうかはわかりませんが、それらがchpwdを変更して上書きしない限り、上書きされます彼らの上書き:D)、それはすべきです。