https://wiki.archlinux.org/title/Xephyr
Before Reading this post I recommend watching the above video and wiki page. Here I only provide an example script of setting up a dev environment.
#!/bin/sh
Xephyr -br -ac -noreset -screen 800x600 :1 &
DISPLAY=:1 awesome --config ./rc.lua &
ls ./*.lua | entr kill -s SIGHUP $(ps | grep -Po '([0-9]*)(?=( p.*\.awesome))') &
Explanation:
first lines runs a Xephyr instance and creates a DISPLAY :1
next line starts the window manager using the config file in the current directory.
next line uses entr to listen for changes to the file and send a SIGHUP signal to the window manager to reload the rc.lua.
also in case you need to kill everything running in the background of you pty
for string in `ps | cut -d ' ' -f 1`; do kill -s term $string; done
Result