coolstuff2 / services /desktop_service.py
SamuelLance73's picture
Automated deployment update from ML build
a93b3b5 verified
Raw
History Blame Contribute Delete
1.28 kB
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")