The simplest way to start an X session has to be the startx(1) script.

However, startx(1) is only wrapping another tool to provide sane
defaults. The original command here is xinit(1), so the real question is,

# how does `xinit` works?

Here is what happens:

1. xinit starts
2. xinit executes and fork X(7) 
3. xinit executes ~/.xinitrc or the command given as a parameter
4. xinit kills X
5. xinit stops

As long as X is running, your graphical session will be up. So the ONLY way to
keep it running longer than a few seconds is to make the ~/.xinitrc script
blocking. because, if xinit is stuck at step 3, it will not reach step 4, so
your session will run for a longer time. So just add a "blocking" command at the
end of your xinitrc, to have it running ad eternam:

    #!/bin/sh
    xsetroot -solid gray
    cwm &
    xterm

By using this, your X session will stay up and running until you kill the
terminal. Any blocking program would do, just like this `xwait` script:

	#!/bin/sh
	while :; do sleep 10000; done

For those who would like a nice pstree(1) output, you can use exec(1) to have
the /bin/sh process replaced by the command passed, turning this:

    init-+-agetty
         |-sh---xinit-+-X
                      `-sh---xwait

into this :

    init-+-agetty
         |-sh---xinit-+-X
                      `-xwait

Know you can find a smart way to waste all these resources you saved ! 🙃