For a start “+I” is inavlid, since there has to be a space after the “+”, hence: “+ I”. I don’t assume this to be an issue, rather it’s more likely to be a copy/paste error.
What you’re really missing though is that because this is running inside a function “$2” by itself has specific meaning to FVWM in that it’s a positional parameter. Hence what’s actually needed is escaping to protect the expansion of “$2” awk, SetEnv and Echo:
First you have awk which will strip “$2” outright. If it does that you have nothing left, so we add in our head:
$2
Then we have the SetEnv command. This doesn’t expand anything. Then we have echo – that’s a shell builtin by the time we’re at the shell, but it will try and interpolate anything given to it, hence we add to your list another case for a dollar:
$$2
PipeRead – well, yes, that does interpolation, so another dollar:
$$$2
And finally we have the unseen function name which itself will be interpolating this, hence:
It’s not part of any FAQ, but if I expand it a bit (excuse the pun), I’ll add it to the FvwmWiki and the #fvwm channel FAQ when both respective machines are up and in a working order again.