@worldsendless A trick I used many years ago when using questionably reliable window managers, was to start a terminal rather than a WM as the root X11 process. Then start the WM from there. If ever you need to restart the WM, you can exit it, and start it anew from that terminal. Combined with desktop-save-mode, that should make restarting Emacs pretty low-impact
@worldsendless My ild startup sequence was: xinit launches an xterm/urxvt which starts screen (these days I'd use tmux), which then starts the WM.
You can always reconnect to the tmux session from another system terminal or even ssh, to affect your X session. A bit of a Rube Goldberg machine, but it works