Configuring MSYS for real work
People always request Windows binaries for some of my project, so I'm using a fairly complete MinGW/MSYS setup to get this done. However, the default setup for MSYS is not very efficient and doesn't manage to blend well in a Windows install (which is kind of expected). Here are some tricks to make it behave a bit better.
Bash prompt
An improvement on my existing "exit-status-colored" bash prompt. In Windows the path get long very easily (starting with "/c/Document and Settings/user/My Documents" before you've even got anywhere!). So here's a bash prompt that looks just like the previous one, but truncates the path to the last 4 elements. It's rather useful for other OSes, as well.
function exitstatus {
if [ "$?" -eq "0" ]
then
COLOR=32
else
COLOR=31
fi
}
PROMPT_COMMAND=exitstatus
PS1='$(
IFS="/"
d=3
p=($(echo "\w"))
e=$((${#p[@]}-1))
P="\w"
if [ $d -lt $e ]; then
b=$(($e-$d+1))
P="${p[$((b++))]}"
for ((;$e-$b+1; b++)); do
P="$P/${p[$b]}"
done
fi
echo -n "\[\e[01;$COLOR;40m\]\u@\h\[\e[39m\]:\[\e[01;34m\]$P \[\e[0m\e]0;$P\$\a\]\$ "
)'
While you're setting up bashrc and profile, you likely also want to setup $EDITOR, and the usual ll and la aliases (to ls --color).
Terminal emulator
The default setup uses Windows' DOS shell window to run bash. This gets annoyingvery quickly : it is not resizeable and has a lot of other bugs. I tried Console2 for a while but wasn't too happy with it either. The MinGW-provided rxvt seems to work fine. MinTTY looks interesting, but I didn't notice it before I was done with rxvt. Maybe next time...
Anyway, the default settings for rxvt are not too nice. I did some changes to make it a bit nicer and more useful. The first step is to open MSYS.BAT and replace the rxvt start command (start %WD%rxvt ...) with this:
set HOME=/home/USER start %WD%rxvt -backspacekey ^H -sl 2500 -fn "Lucida Console-11" -fb "Lucida Console-11" -sr -geometry 132x50 -e /bin/sh --login -i
The HOME variable is set so rxvt can find .Xdefaults, and I also changed the font, increased the window size, and removed some color-related options.
Next step is to add a .Xdefaults file in the aformementionned HOME directory. There we'll setup the colors to look a bit nicer. Notice I used the same font for bold and normal text (rxvt bold rendering looks bad). So I set up different colors for bold and non-bold, so I can see all the 16 colors (rxvt could support up to 256, but this is not compiled in the mingw version). Here's my colorscheme.
Rxvt*color0: black Rxvt*color1: orangered Rxvt*color2: forestgreen Rxvt*color3: gold Rxvt*color4: dodgerblue4 Rxvt*color5: indigo Rxvt*color6: cyan4 Rxvt*color7: azure3 Rxvt*color8: darkgrey Rxvt*color9: crimson Rxvt*color10: darkolivegreen1 Rxvt*color11: darkorange Rxvt*color12: dodgerblue Rxvt*color13: deeppink Rxvt*color14: aquamarine Rxvt*color15: white Rxvt*background:gray7 Rxvt*foreground:aliceblue
More apps
Now install vim and svn (tortoiseSVN provides svn command-line client as an option in the installer), add them to bash path, and you're ready to go.
A little annoyance left : when started from bash, vim will read config in /home/user. When started from anywhere else, it will read in document and settings/user instead. So you have to copy your vimrc and vimfiles in both places.