Last active
April 13, 2025 11:24
-
-
Save danawesome/dd663b3f41d29870be89e907d0f04f5e to your computer and use it in GitHub Desktop.
Zorin OS 17 enhanced session install.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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