GNU screen のメモ

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

----------------------------------