For anyone interested in doing something similar, I highly recommend making the last program in your .xinitrc be a terminal emulator rather than Emacs, that way if Emacs crashes, your other windows will persist.
Something like:
# start other stuff
emacs &
exec kitty