I also use xbindkeys. The advantage over using the window manager's features is that you have consistency regardless of wm (i.e. if you switch to a different wm, no need to reconfigure your key bingings).
And if you run out of keys (or can't remember them all), for simple commands (i.e. no arguments or fixed arguments) you can also "overload" xterm/rxvt to produce a unique appicon. E.g.
Code:
xterm -name MyApp -e cmd
will create an appicon with the resource name "MyApp" (which is distinct from the default xterm appicon). You can then edit the "Settings" (right click on appicon) to give it it's own icon, etc.
One problem is that you have a useless xterm lying around waiting for the program to exit. The solution to this is, after you have your appicon, bring up the "Settings" to show the command line that is executed. Change it to
Code:
xterm -name MyApp -e sh -c 'nohup cmd &'
This will cause the shell to exec the cmd in the background and exit immediately. nohup prevents the cmd from dying when shell exits. Note that you can't just do this to begin with since the appicon disappears when the xterm exits (put in on the dock before editing the Settings). Also note that you can't just do '... -e nohup ...' because it is the shell which interprets the '&'.
You can also add a -geometry option to open the xterm offscreen so it doesn't cause annoying flicker when it pops up/exits. (e.g. -geometry 1x1+-50+-50).