・GNU screen いろいろまとめ。 - naoyaのはてなダイアリー
関連:
・screen のステータスラインに実行したコマンド名を表示する方法 - masutaroの日記
・「ari's diary の 2002年6月14日の記事」
-------------------------------
* ステータスライン
せっかくだから、ステータスラインを有効活用する。
kterm では `chpwd () { echotc ts 0; dirs; echotc fs}' って感じで ディレクトリスタックをステータスラインに表示しているんだけど、 screen を使っている時は window 一覧も表示させてみよう。 でもって、window のタイトルは実行したコマンドになるように。
まずは、.screenrc の設定。
hardstatus ignore "%w | %h"
で、.zshrc では chpwd で hardstatus を変え、preexec で title を変えてっと。
if [ "$TERM" = "screen" ]; then chpwd () { echo -n "^[_`dirs`^[\\" } preexec() { # see [zsh-workers:13180] # http://www.zsh.org/mla/workers/2000/msg03993.html emulate -L zsh local -a cmd; cmd=(${(z)2}) case $cmd[1] in fg) if (( $#cmd == 1 )); then cmd=(builtin jobs -l %+) else cmd=(builtin jobs -l $cmd[2]) fi ;; %*) cmd=(builtin jobs -l $cmd[1]) ;; cd) if (( $#cmd == 2)); then cmd[1]=$cmd[2] fi ;& *) echo -n "^[k$cmd[1]:t^[\\" return ;; esac local -A jt; jt=(${(kv)jobtexts}) $cmd >>(read num rest cmd=(${(z)${(e):-\$jt$num}}) echo -n "^[k$cmd[1]:t^[\\") 2>/dev/null } chpwd fi
----------------------------------