screen, zsh, 処理終わったか見たい

長い処理させてウィンドウ切り替えたとき、バックグラウンドのウィンドウの処理が終わっているんだかいないんだかが気になるので手を入れた。
何かいい方法があるのかもしれないけど、よくわからないのでごちゃる。
ari's diary - ステータスライン のスクリプトを使っている。
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^[\\"
prev=$cmd[1]
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
prev=$cmd[1]
}
precmd() {
#local prev; prev=`history -1 | sed "s/^[ 0-9]*//" | sed "s/ .*$//" `
echo -n "^[k$:$prev^[\\"
}
chpwd
fi みたいにした。precmd を追加しただけ。
これで、実行が終わったら$:prevcmd みたいなウィンドウ名になるので一目でわかりやすい気分。
上のスクリーンショットだと、0 が入力待ち (前回のコマンドは sleep) 1 がアクティブで emacs, 2 が sleep 実行中
preexec の処理を利用するようにした。cd の場合にちゃんとディレクトリになるように。
関連エントリー
- tmux 用の cdd (ウィンドウ番号を指定して cd) GNU screen のとき定義していた cdd という、既に開いている別ウィンドウのディレクトリにcdするコマンドがあった(ref. cd...
- cdd とお別れして、別の cdd を定義した ずっと cdd ( http://secondlife.hatenablog.jp/entry/20080218/1203303528 ) ...
- アカウントが共有のサーバで自分だけの環境を構築する もろもろの事情でアカウントが共有のサーバで、自分だけの環境を構築するためのメモです 以下は普通にインストール済みの前提 (インストールされて...
- Raspberry Pi から HDMI-CEC コントロール サイネージ HDMI CEC 連携 カレンダーを表示するおうちサイネージ というのを作っていたがモニタの置き場がなくなってしまったので、テレ...
- vim に乗り換えるよ! Emacs の設定に嫌気がさしたので (ネガティブドリブン) 、vim に乗り換えるよ! ubuntu 6.06 LTS の vim は V...