Basta colocar exec "$@"
no final do seu xinitrc
e, em seguida, executar
startx /path/to/xinitrc <wm> <wm-args>
de um tty.
startx
interpreta seu primeiro argumento de string como o cliente ( /path/to/xinitrc
, observe que ele deve ser um caminho absoluto), e os demais argumentos são passados para esse cliente (wm e wm-args), que são exec
ed pelo xinitrc.
Observe que o startx é apenas um exemplo de script e você é incentivado a criar outro de acordo com suas necessidades. A configuração acima mencionada deve atender aos requisitos mencionados na questão.