お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-08-19 22:35:10

tana
新しいメンバ
登録日: 2010-02-23

GNU Screen ウィンドウ名表示を変えられない

GNU Screenで、実行中のコマンドを表示しようと思い、zshの設定を書いていたのですが、
エスケープシーケンスを使ってウィンドウ名の表示を変える部分が使えなくなってしまうことがあることに気づきました。

http://d.hatena.ne.jp/rdera/20090219/1235048245 ここなどを参考にして書いていたのですが、
screenの時に普通にシェルに
「echo -ne "\ekHello\e\\"」のように入力しても、実行されない時があります。特に、既にその方法でウィンドウ名を別の文字に設定していた時に起こります。

ウィンドウ名を表示するところは、「hardstatus alwayslastline」を使って設定してあります。

設定が間違っているのでしょうか。よろしくお願いします。

オフライン

 

#2 2010-08-20 15:46:09

tana
新しいメンバ
登録日: 2010-02-23

Re: GNU Screen ウィンドウ名表示を変えられない

Terminator(Javaで書かれている)やxtermなど、GTKを使っていないターミナルを使えば正常に動作したので、
一応自己解決のつもりですが、
いろいろな端末を試してみて、GTKとlibvteのライブラリが使われている端末(gnome-terminal, lxterminal, xfce4-terminalなど)ではうまく動かないような感じがします。
GTKやlibvteが悪いと断定するほどの知識はありませんが、これからももう少し調べてみようと思います。

オフライン

 

#3 2010-08-20 18:52:30

hito
管理者
登録日: 2007-03-18

Re: GNU Screen ウィンドウ名表示を変えられない

1)
おそらく precmd() や preexec() あたりを定義していると思うのですが、zshrcの定義部を貼ることはできますか?

2)
zshのお約束としては、ecno -ne の代わりに、print -Pn の方が使えるエスケープ文字が増えて幸せな気がします。

オフライン

 

#4 2010-08-20 19:13:49

tana
新しいメンバ
登録日: 2010-02-23

Re: GNU Screen ウィンドウ名表示を変えられない

ありがとうございます。
zshの設定はこんな感じになっています。

コード:

if [ "$TERM" = "screen" ]; then
  preexec() {
    1="$1 "
    print -n "\ek${${(s: :)1}[1]}\e\\"
  }
  precmd() {
    print -n "\ekzsh\e\\"
  }
fi

echo -neも、print -nも、print -Pnも、どれもgnome-terminalではうまく動作しませんでした。

オフライン

 

#5 2010-08-20 19:49:06

hito
管理者
登録日: 2007-03-18

Re: GNU Screen ウィンドウ名表示を変えられない

tana による投稿:

zshの設定はこんな感じになっています。

コード:

        preexec() {
                MY_ZSH_EXEC=$(echo $1|cut -d ' ' -f1)
                print -Pn "\ek $MY_ZSH_EXEC \e\\"
        }

で済むような気がしますが、どうでしょうか。

オフライン

 

Board footer

Powered by FluxBB