Skip to content

Instantly share code, notes, and snippets.

@Aetherinox
Forked from danawesome/install-xrdp.sh
Created April 13, 2025 11:24
Show Gist options
  • Save Aetherinox/0eab9aec235f4859e0fd6c856c08dd54 to your computer and use it in GitHub Desktop.
Save Aetherinox/0eab9aec235f4859e0fd6c856c08dd54 to your computer and use it in GitHub Desktop.
Zorin OS 17 enhanced session install.sh
#!/bin/bash
# This script is for Zorin!_OS 17 to download and install XRDP+XORGXRDP via source.
#
# Based on the following scripts:
# https://github.com/microsoft/linux-vm-tools/tree/master/ubuntu/18.04
# https://github.com/microsoft/linux-vm-tools/pull/106
# https://gist.github.com/phillipsj/a4b6e4a1070b4320ed19e061fe2dd83d
# https://gist.github.com/kaitwalla/9fbcef47c5ff2b58cd353ba3744be4e5
# https://github.com/itsmebhavin/zorin-os-xrdp/blob/master/install.sh
#
###############################################################################
# Must be root, sudo su, or start script as sudo
if [ "$(id -u)" -ne 0 ]; then
echo 'This script must be run with root privileges' >&2
exit 1
fi
# update and upgrade machine if needed.
apt update && apt upgrade -y
if [ -f /var/run/reboot-required ]; then
echo "A reboot is required in order to proceed with the install." >&2
echo "Please reboot and re-run this script to finish the install." >&2
exit 1
fi
###############################################################################
# XRDP
# Adding Enhanced Session packages
# Install hv_kvp utils
apt install -y linux-tools-virtual
apt install -y linux-cloud-tools-virtual
# Needed to address errors
apt install -y dbus-x11
# Install the xrdp service so we have the auto start behavior
apt install -y xrdp
systemctl stop xrdp
systemctl stop xrdp-sesman
# Configure the installed XRDP ini files.
# use vsock transport.
#sed -i_orig -e 's/use_vsock=false/use_vsock=true/g' /etc/xrdp/xrdp.ini #alternate setting
sed -i_orig -e 's/port=3389/port=vsock:\/\/-1:3389/g' /etc/xrdp/xrdp.ini
# use rdp security.
sed -i_orig -e 's/security_layer=negotiate/security_layer=rdp/g' /etc/xrdp/xrdp.ini
# remove encryption validation.
sed -i_orig -e 's/crypt_level=high/crypt_level=none/g' /etc/xrdp/xrdp.ini
# disable bitmap compression since its local its much faster
sed -i_orig -e 's/bitmap_compression=true/bitmap_compression=false/g' /etc/xrdp/xrdp.ini
# Add script to setup the zorin session properly
if [ ! -e /etc/xrdp/startzorin.sh ]; then
cat >> /etc/xrdp/startzorin.sh << EOF
#!/bin/bash
export GNOME_SHELL_SESSION_MODE=zorin
export XDG_CURRENT_DESKTOP=zorin:GNOME
exec /etc/xrdp/startwm.sh
EOF
chmod a+x /etc/xrdp/startzorin.sh
fi
# use the script to setup the zorin session
sed -i_orig -e 's/startwm/startzorin/g' /etc/xrdp/sesman.ini
# rename the redirected drives to 'shared-drives'
# INFO Still a little buggy - needs more work.
sed -i -e 's/FuseMountName=thinclient_drives/FuseMountName=shared-drives/g' /etc/xrdp/sesman.ini
# INFO Needs more testing, or manually add.
# Add 1920x1200 resolution to /etc/X11/xrdp/xorg.conf
sed -i -e 's/VertRefresh 60-75/ModeLine "1920x1080" 138.500 1920 1968 2000 2080 1080 1083 1088 1111 +hsync -vsync/g' /etc/X11/xrdp/xorg.conf
# Adding if to create missing Xwrapper.config
if [ ! -e etc/X11/Xwrapper.config ]; then
cat >> etc/X11/Xwrapper.config
fi
# Changed the allowed_users
sed -i_orig -e 's/allowed_users=console/allowed_users=anybody/g' /etc/X11/Xwrapper.config
# Blacklist the vmw module
if [ ! -e /etc/modprobe.d/blacklist_vmw_vsock_vmci_transport.conf ]; then
cat >> /etc/modprobe.d/blacklist_vmw_vsock_vmci_transport.conf <<EOF
blacklist vmw_vsock_vmci_transport
EOF
fi
#Ensure hv_sock gets loaded
if [ ! -e /etc/modules-load.d/hv_sock.conf ]; then
echo "hv_sock" > /etc/modules-load.d/hv_sock.conf
fi
# Configure the policy xrdp session
cat > /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla <<EOF
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes
EOF
# fix for the black screen - See https://askubuntu.com/questions/1404245/remote-desktop-from-windows-onto-ubuntu-22-04-takes-me-to-a-xrdp-login-then-a-bl answer in comment
adduser xrdp ssl-cert
# reconfigure the service
systemctl daemon-reload
# IMPORTANT! current user account needs to be logged out first, addresses green screen issues
#systemctl start xrdp # Keep this commented out unless you are sure you know what you are doing.
#
# End XRDP
###############################################################################
echo "Install is complete."
echo "Reboot your machine to begin using XRDP."
# Will automatically reboot in 10 seconds unless user answers "n"
rebooting_maybe ()
{
local PS3='Confirm system reboot [y]/n: '
local TMOUT=10
local do_reboot=true
while true; do
if ! read -p "$PS3"; then
# timeout
break
fi
case $REPLY in
[yY]*)
# default case
break ;;
[nN]*)
do_reboot=false
break ;;
*)
echo 'Sorry, try again' >&2
esac
done
if "$do_reboot"; then
echo 'Rebooting...'
systemctl reboot now
else
echo 'Will not reboot'
fi
}
rebooting_maybe()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment