Spaces:
Paused
Paused
| import os,subprocess | |
| from pathlib import Path | |
| from loguru import logger | |
| PORT=6080 | |
| VNC_PORT=5901 | |
| DISPLAY=':1' | |
| PREFIX='[DESKTOP]' | |
| def start(log): | |
| A=log;E=Path.home();B=E/'.vnc';B.mkdir(parents=True,exist_ok=True);C=B/'xstartup';F='#!/bin/sh\nunset SESSION_MANAGER\nunset DBUS_SESSION_BUS_ADDRESS\n[ -x /etc/vnc/xstartup ] && exec /etc/vnc/xstartup\n[ -r $HOME/.Xresources ] && xrdb $HOME/.Xresources\nvncconfig -iconic &\nxsetroot -solid grey\ndbus-launch --exit-with-session startxfce4\n';C.write_text(F);C.chmod(493) | |
| for G in[f"/tmp/.X11-unix/X{DISPLAY[1:]}",f"/tmp/.X{DISPLAY[1:]}-lock"]: | |
| try: | |
| D=Path(G) | |
| if D.exists():D.unlink() | |
| except Exception as H:logger.debug(f"{PREFIX} Cleanup warning: {H}") | |
| logger.info(f"{PREFIX} Starting VNC server on display {DISPLAY}...");I=['vncserver',DISPLAY,'-geometry','1280x720','-depth','24','-localhost','yes','-SecurityTypes','None'];subprocess.run(I,stdout=A,stderr=A);logger.info(f"{PREFIX} Launching websockify on 127.0.0.1:{PORT} serving noVNC...");J='/usr/share/novnc/';K=['websockify','--web',J,str(PORT),f"127.0.0.1:{VNC_PORT}"];L=os.environ.copy();M=subprocess.Popen(K,stdout=A,stderr=A,env=L);logger.success(f"{PREFIX} Desktop environment initiated (pid {M.pid}). Reachable locally at http://127.0.0.1:{PORT}/vnc.html") |