デバッグ出力ウィンドウの位置を記憶させよう

vim + screen + gdbデバッグしよう」シリーズのつづき
http://d.hatena.ne.jp/parasporospa/20060827


終了時にデバッグ出力ウィンドウの位置とサイズを記憶させたい。
そこでデバッグ開始するスクリプト gdbvim を次のように修正した。

#!/bin/bash

debugout_geomfile="$HOME/.DebugOutput-geometry"

# kterm (ログウィンドウ) を開き、疑似端末デバイス名をファイルに保存
if [ -f $debugout_geomfile ]; then
	debugout_geom=`cat "$debugout_geomfile"`
else
	debugout_geom='-geometry 70x13+0+500'
fi
kterm $debugout_geom -T "Debug Output" -e sh -c 'tty > debugout.tty;cat' &
ktermpid=$!

# debugout.tty ができるまで待つ
while [ ! -f debugout.tty ]; do 
	sleep 1
done

debugout=`cat debugout.tty`

rm -f debugout.tty

# gdb を起動。そして runcmd を実行させる。
echo "run -f -g 2> $debugout " >| runcmd 
# SIGINT が来たら gdb に渡す
trap "pkill -2 gdb" 2
gdb -x runcmd --args ./vim

# 後始末
xwininfo -name "Debug Output" | grep -e '-geometry' >| "$debugout_geomfile"
kill $ktermpid 2> /dev/null
rm -f runcmd

終了直前に xwininfo を使って -geometry をファイルに保存する。
うちのウィンドウマネージャ xfwm4 はウィンドウ初期位置に関するオプションがないらしい。