85 lines
2.4 KiB
Bash
85 lines
2.4 KiB
Bash
apt install -y lightdm lightdm-gtk-greeter lightdm-gtk-greeter-settings \
|
|
lightdm-settings xserver-xephyr tigervnc-standalone-server tigervnc-common tigervnc-tools
|
|
|
|
# remote access to the current desktop session.
|
|
# x11vnc -display :0 -auth /var/run/lightdm/root/:0
|
|
|
|
# Secure Access via SSH Tunnel
|
|
# For security, never expose VNC directly to the internet.
|
|
|
|
# Instead, use an SSH tunnel:
|
|
# ssh -L 5900:localhost:5900 user@your-server-ip
|
|
|
|
# Setup tigervnc for lightdm vnc connection.
|
|
conf_print_initd() {
|
|
cat <<-'EOF'
|
|
#!/sbin/openrc-run
|
|
|
|
name="x0vncserver"
|
|
description="Remote desktop service (VNC) for :0 display"
|
|
|
|
depend() {
|
|
need net
|
|
after lightdm
|
|
}
|
|
|
|
command="/usr/bin/x0vncserver"
|
|
command_args="-display :0 -rfbauth /etc/vncpasswd"
|
|
command_user="root"
|
|
pidfile="/run/x0vncserver.pid"
|
|
|
|
start_pre() {
|
|
if [ ! -f "${command_args##* }" ]; then
|
|
eerror "VNC password file not found. Run vncpasswd /etc/vncpasswd/"
|
|
return 1
|
|
fi
|
|
}
|
|
EOF
|
|
}
|
|
conf_print_initd | sudo tee /etc/init.d/x0vncserver
|
|
chmod +x /etc/init.d/x0vncserver
|
|
|
|
rc-update add x0vncserver default
|
|
|
|
vncpasswd /etc/vncpasswd
|
|
chmod 600 /etc/vncpasswd
|
|
|
|
rc-service x0vncserver start
|
|
|
|
# Set the vnc section of lightdm config file
|
|
# https://wiki.archlinux.org/title/LightDM#VNC_Server
|
|
#!/bin/sh
|
|
CONF="/etc/lightdm/lightdm.conf"
|
|
|
|
# Ensure [VNCServer] section exists and set values
|
|
sed -i '/^\[VNCServer\]/,/^\[.*\]/ s/^#enabled=/enabled=/' "$CONF"
|
|
sed -i '/^\[VNCServer\]/,/^\[.*\]/ s/^#command=/command=/' "$CONF"
|
|
sed -i '/^\[VNCServer\]/,/^\[.*\]/ s/^#port=/port=/' "$CONF"
|
|
sed -i '/^\[VNCServer\]/,/^\[.*\]/ s/^#listen-address=/listen-address=/' "$CONF"
|
|
sed -i '/^\[VNCServer\]/,/^\[.*\]/ s/^#width=/width=/' "$CONF"
|
|
sed -i '/^\[VNCServer\]/,/^\[.*\]/ s/^#height=/height=/' "$CONF"
|
|
sed -i '/^\[VNCServer\]/,/^\[.*\]/ s/^#depth=/depth=/' "$CONF"
|
|
|
|
# Set actual values (modify as needed)
|
|
sed -i 's/^enabled=.*/enabled=true/' "$CONF"
|
|
sed -i 's/^command=.*/command=Xvnc -rfbauth /etc/vncpasswd/' "$CONF"
|
|
sed -i 's/^port=.*/port=5900/' "$CONF"
|
|
sed -i 's/^listen-address=localhost/' "$CONF"
|
|
sed -i 's/^width=.*/width=1024/' "$CONF"
|
|
sed -i 's/^height=.*/height=768/' "$CONF"
|
|
sed -i 's/^depth=.*/depth=24/' "$CONF"
|
|
|
|
# config_file=/etc/lightdm/lightdm-gtk-greeter.conf
|
|
|
|
#typeset -A rules
|
|
#rules=(
|
|
#"theme-name" "Adwaita-dark"
|
|
#"icon-theme-name" "Adwaita"
|
|
#"cursor-theme" ${username}
|
|
#)
|
|
#
|
|
#for rule in "${!rules[@]}"; do
|
|
# regex="s/^#\?\(${rule}\s*\).*$/\1 ${rules[${rule}]}/"
|
|
# sed -i "${regex}" ${config_file};
|
|
#done
|