私の開発環境の一つはMacBookProと27Inch Thunderbolt Displayを使ったデュアルディスプレイ環境です。
頻繁に使うコマンドの一つにgitk --allがあるのですが、
このgitkコマンド君、ウィンドウ位置を復元してくれません。
普通に実行すると、MacBookProの本体側のディスプレイにこんな感じに表示されます。
そして、Thunderboltディスプレイの方にウィンドウを引っ張っていき閉じます。
すると、次にgitk --allした時は元のMacBookPro側のディスプレイに表示されてしまうわけです。
アホすぎます。
使いづらいことこの上ないです。
それならgitkのソースを修正しウィンドウ位置が復元されるように
直してしまえばいいじゃない。
ということで修正しました。
gitのソースはgithubにありますが、フォークしました。
https://github.com/pebble8888/git
まずはgitをビルドしますが、brewでgitをインストールしている場合は、事前にアンインストールしておきます。
$brew uninstall git
ビルドは以下のコマンドで行います。
$make configure $./configure $make $make install
失敗する場合は何かが足りませんので、がんばって足して下さい。(放り投げ)
gitkはtcl/tkというシェルを拡張したようなスクリプト言語でできています。
Mac環境ではwishという別名?が付いたりしているようです。
tcl/tk自体にはトップウィンドウの位置を指定する機能がありますので、
gitkにこの機能を組み込んであげることにします。
if {[info exists geometry(main)]} { - if {[scan $geometry(main) "%dx%d" w h] >= 2} { + # restore root window left top position + set geometry_ex [regsub -all {\+} $geometry(main) {,}] + if {[scan $geometry_ex "%dx%d,%d,%d" w h x y] >= 4} { if {$w > [winfo screenwidth .]} { set w [winfo screenwidth .] } if {$h > [winfo screenheight .]} { set h [winfo screenheight .] } - wm geometry . "${w}x$h" + wm geometry . "${w}x${h}+${x}+${y}" } }
gitk-git/gitkファイルの中身を見ると、トップウィンドウのwidthとheight
は設定していますが、topとleftを指定していません。
保存はしているようだったので、保存されている値を用いてウィンドウ位置を
指定するように修正してあげます。
修正したらビルドして完了です。
見事に復元されるようになりました。やったー。
この作業後にOSをMavericksにあげたのですが、ディスプレイのミラーリングモード
に機能強化が入っており、ミラーリングモードでも、27Inch Thunderbolt Displayの
解像度が指定できるようになっていました。
おおう、これは便利。
これを先にやっていたらgitkの修正はしていなかったかもしれません。
まあ、便利になってはいるのでよしとします。
<tcl/tk参考URL> http://homepage3.nifty.com/kaku-chan/tcl_tk/