Consegui responder à parte Alternative da minha pergunta, ou seja, use vnc4server ou tightvncserver para iniciar uma sessão do Xubuntu em vez de uma sessão XFCE simples. Isso é separado do LightDM, que pode ser interrompido ou colocado no manual. Vou investigar as sugestões de Nicholas mais tarde.
Isso é equivalente a fazer login via LightDM com uma sessão do Xubuntu, ele permanece ativo se minha conexão vnc morrer ou eu desconectar, e eu posso aproveitar as customizações do Xubuntu.
Para fazer isso, faça ~/.vnc/xstartup
conter apenas o seguinte:
#!/bin/sh
export XDG_CONFIG_DIRS=/etc/xdg/xdg-xubuntu:/etc/xdg:/etc/xdg
export XDG_DATA_DIRS=/usr/share/xubuntu:/usr/local/share/:/usr/share/:/usr/share
vncconfig -iconic &
. lightdm-session
Você pode substituir . lightdm-session
por exec startxfce4
ou startxfce4 &
. O primeiro é realmente o que o LightDM chama, mas chama xfce4-session no final.
Isto então inicia uma sessão do Xubuntu, ao invés de uma simples XFCE, e você pode parar o LightDM completamente se o acesso ao teclado / X não for necessário.
Você pode configurar um daemon colocando o seguinte em /etc/init/vncserver.conf
:
start on runlevel [2345]
stop on runlevel [016]
post-start script
su USER -c "vncserver :1 -geometry 1280x800 -depth 16 -localhost -SecurityTypes None"
end script
post-stop script
su USER -c "vncserver -kill :1"
end script
Em seguida, inicie / pare com start vncserver
. O acima é para o vnc4server e irá iniciar o Xvnc escutando somente no 127.0.0.1 e não exigirá uma senha. Isso é útil para mim, já que eu uso um túnel ssh:
ssh -L6901:127.0.0.1:5901 [email protected]
Se você usar tightvncserver, exclua a opção -SecurityTypes None , pois ela não a entende. Note que tightvncserver sempre pede uma senha (você não pode fazer isto sem senha).
OBSERVAÇÃO: se o usuário acima não for root, ou se você executar "vncserver: 1 [options]" como não-root, então dentro do XFCE haverá problemas de sudo em aplicativos GUI, porque o aplicativo sudo-ed subjacente não encontrará um display X. Ainda não encontrei uma solução para isso. Com o x11vnc, ele funciona porque o x11vnc se conecta a uma sessão X existente, incluindo: 0 um.