This thought for only launcher of x.org because when launch classical “startx”, the last launch will use. I created a alias on .bashrc for simpler use.

#!/bin/bash

xdef="openbox-session"

case $1 in

kde)
echo "startkde" > $HOME/.xinitrc
startx
;;

gnome)
echo "gnome-session" > $HOME/.xinitrc
startx
;;

openbox)
echo "openbox-session" > $HOME/.xinitrc
startx
;;

def)
echo $xdef > $HOME/.xinitrc
startx
;;

*)
echo "options: kde, gnome, openbox, def"
;;

esac