MinTTYはCygwinの新しいデフォルトコンソールです。
MinTTYウィンドウのタイトルを変更するシェルコマンド(.bashrcまたは.zshrcに追加できるもの)とは何ですか?
ウィンドウのタイトルを現在のディレクトリへのパスにし、コンソール内でディレクトリを切り替えると更新されるようにします。
-T <title>
は、Windowsショートカットプロパティで使用できます。も参照してくださいmintty man page
。
MinTTYはCygwinの新しいデフォルトコンソールです。
MinTTYウィンドウのタイトルを変更するシェルコマンド(.bashrcまたは.zshrcに追加できるもの)とは何ですか?
ウィンドウのタイトルを現在のディレクトリへのパスにし、コンソール内でディレクトリを切り替えると更新されるようにします。
-T <title>
は、Windowsショートカットプロパティで使用できます。も参照してくださいmintty man page
。
回答:
なにが問題ですか
次のコマンドは機能していませんでした:
echo -ne "\e]0;MYTITLE\a"
デフォルトのCygwinインストールには、次のプロンプト定義が.bashrcに含まれていることがわかります。
PS1=\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$
プロンプトの最初の部分(\e]0;\w\a
)は、プロンプトが表示されるたびにウィンドウのタイトルを設定することに注意してください。
ソリューション
次の行を追加して.bashrc
、2つの関数を定義します。
function settitle() {
export PS1="\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
echo -ne "\e]0;$1\a"
}
function settitlepath() {
export PS1="\[\e]0;\w\a\]\n\[\e[32m\]\u@\h \[\e[33m\]\w\[\e[0m\]\n$ "
}
次に、このコマンドでカスタムタイトルを設定できます。
settitle "MYWonderfullTest here"
または、次のコマンドでcygwinのデフォルト(現在のパス)に戻すことができます。
settitlepath
お役に立てれば
source ~/.bashrc
に注意してください。そうしないと、cygwinは、cygwinの起動時にディスク上にあったbashrcの古いバージョンを引き続き実行します。-テスト済みCygwin version 2.8.1 (64 bit)
次のように、xterm制御シーケンスでこれを変更できます。
echo -ne '\e]0;Title\a'
これを.zshrcに配置します。
# Change title of MinTTY to current dir
function settitle() {
echo -ne "\033]2;"$1"\007"
}
function chpwd() {
settitle $(cygpath -m `pwd`)
}
関数settitleの特殊文字のシーケンスにより、MinTTYはウィンドウのタイトルを変更します。
でzshのあなたは特別な名前chpwdで関数を定義した場合、それがされ、それぞれにchdirした後に呼び出さ。
Cygwin 1.7およびMinTTYがzshを実行しているWinXPで動作します。
settitle "$(pwd)@$HOST"
1)$ PS1をエコーし、その文字列を次のようにクリップボードまたはテキストエディターにコピーします。 エコー$ PS1 2)〜/ .bash_profileを編集し、以下のシェルコードを追加し、必要に応じて$ PS1を置き換えますが、$ {TERMINAL_TITLE}変数を「false」状態のままにします。 3)ファイルを保存し、TERMINAL_TILE環境変数を次のように設定します export TERMINAL_TITLE = "カスタムタイトル" 4)次のようにbashプロファイルを取得します 。〜/ .bash_profile 楽しい if [-z "$ {TERMINAL_TITLE}"] それから PS1 = '\ [\ e] 0; \ w \ a \] \ n \ [\ e [32m \] \ u @ \ h \ [\ e [33m \] \ w \ [\ e [0m \] \ n \ $ ' 他に PS1 = '\ [\ e] 0; $ {TERMINAL_TITLE} \ a \] \ n \ [\ e [32m \] \ u @ \ h \ [\ e [33m \] \ w \ [\ e [0m \ ] \ n \ $ ' fi
Leonelの答えを使用しましたが、これを行うとタイトルがちらつくだけでした。つまり、少なくともechoコマンドは意図したとおりに機能します。を使用してデバッグモードを有効にしてzshをインタラクティブに実行しました
zsh -xv
ディレクトリを変更すると、明らかにtitle()
after precmd()
およびchpwd()
、という名前の別の関数が呼び出され、それらが効果的にオーバーライドされます。だから、これを私の.zshrcにつないでみたところ、うまくいきました。
function settitle() {
echo -ne "\033]2;"$1"\007"
}
function title() {
settitle $(cygpath -m `pwd`)
}
chpwd()
またはprecmd()
代わりに使用する場合は、タイトル機能を無効にしますtitle(){}
。
私はminttyを使用してスクリプトを実行するため、これに対する私のソリューションを共有したかっただけです。
私のminttyショートカットは次のようにセットアップされています:
C:\cygwin64\bin\mintty.exe -i /Cygwin-Terminal.ico /usr/bin/bash.exe -l -c /scripts/connect.sh
私は接続するサーバーのために私を促すメッセージが表示されます上記のショートカットで呼び出され、私が書いたことをconnect.shスクリプトとスクリプトで定義されているのsettitle機能を実行します。
#!/bin/bash
echo "Enter servername when prompted"
echo -n "servername: "
read servername
function settitle() {
echo -ne "\033]2;"$servername"\007"
}
function title() {
settitle $(cygpath -m `pwd`)
}
settitle
ssh my_username@$servername
title
使用しないのに、なぜ関数を定義するのですか?
$PS1
)には、ウィンドウタイトルをuser @ machine:working_directoryに設定する制御シーケンスが既に含まれています。