The script hereafter is outdated and has been replaced by a newer version. Please Check the Download page for latest version. |
Hello World,
Based on our previous post, you should be aware of an issue affecting Ubuntu 18.04.2 when trying to install xrdp package. So far, the issue is only affecting Ubuntu 18.04.2, Ubuntu 18.10 and later seems not to be affected by the issue.
Because Ubuntu 18.04 is a long term support release, we have decided to release a new version of our famous installation script (Std-Xrdp-Install.xx.sh). The latest version of the script is set to 0.5.2 and basically includes the logic to “fix” or “patch” the issue detected in Ubuntu 18.04.2.
Note : Please always check this page, to get the latest version of the script
The Standard Installation Script – Version 0.5.2
Overview
The standard installation script basically simplify and automate the installation of xRDP package on top of Ubuntu 18.04 and later. However, a recent issue has been detected on Ubuntu 18.04.2. which break the installation of xRDP package. Version 0.5.2 of the script includes a simple logic process that will detect if you are running Ubuntu 18.04.2 and will install the necessary packages that are needed to have a succesful xRdp software.
Prerequisites
We assume that you have internet connection on the Ubuntu machine. The internet connection is needed to download the necessary packages that will be installed on your system. To run this script, we would also assume that you are running Ubuntu 18.04 or later version.
The script version 0.5.2
Important Note :
If you copy/paste the script, you might encounter some issues because font formatting might be not maintained during the copy/paste operation. Please ensure that format is accurate before launching the script. A downloadable version of the script is available at the bottom of the post
Disclaimer : As usual, use this at your own risk !!
#!/bin/bash ##################################################################################################### # Script_Name : Std-Xrdp-install-0.5.2.sh # Description : Perform an automated standard installation of xrdp # on ubuntu 18.04 and later # Date : March 2019 # written by : Griffon # Web Site :http://www.c-nergy.be - http://www.c-nergy.be/blog # Version : 0.5.2 # History : 0.5.2 - Patch for Ubuntu 18.04.2 # : 0.5.1- Add support to Ubuntu 18.10 # : 0.5 - Add logic to enable sound redirection # - re-write code logic to include functions # - Removed support for Ubuntu 17.10 as reached end of support # : 0.4 - Add logic to fix GDM lock screen + minor change # : 0.3 - Adding logic to fix theme and extensions for any users login through xrdp # 0.2 - Added Logic for Ubuntu 17.10 and 18.04 detection # - Updated the polkit section # - New formatting and structure # 0.1 - Initial Script # Disclaimer : Script provided AS IS. Use it at your own risk.... #################################################################################################### #---------------------------------------------------# # Detecting if Parameters passed to script .... #---------------------------------------------------# while getopts g:s: option do case "${option}" in g) fixGDM=${OPTARG};; s) fixSound=${OPTARG};; esac done #---------------------------------------------------# # Script Version information Displayed # #---------------------------------------------------# echo /bin/echo -e "\e[1;36m !-------------------------------------------------------------!\e[0m" /bin/echo -e "\e[1;36m ! Standard XRDP Installation Script - Ver 0.5.1 !\e[0m" /bin/echo -e "\e[1;36m ! Written by Griffon - October 2018 - www.c-nergy.be !\e[0m" /bin/echo -e "\e[1;36m !-------------------------------------------------------------!\e[0m" echo #--------------------------------------------------------------------------# # -----------------------Function Section - DO NOT MODIFY -----------------# #--------------------------------------------------------------------------# #---------------------------------------------------# # Function 0 - Patch Ubuntu 18.04.2 #---------------------------------------------------# install_xservercore() { echo /bin/echo -e "\e[1;33m !----------------------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Installing xserver-xorg-core Packages...Proceeding... !\e[0m" /bin/echo -e "\e[1;33m !----------------------------------------------------------!\e[0m" echo sudo apt-get install xserver-xorg-core -y echo /bin/echo -e "\e[1;33m !----------------------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Installing xserver-xorg-input-all pkg...Proceeding... !\e[0m" /bin/echo -e "\e[1;33m !----------------------------------------------------------!\e[0m" echo sudo apt-get -y install xserver-xorg-input-all } #---------------------------------------------------# # Function 1 - Install xRDP Software.... #---------------------------------------------------# install_xrdp() { echo /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Installing XRDP Packages...Proceeding... !\e[0m" /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" echo sudo apt-get install xrdp -y } #---------------------------------------------------# # Function 2 - Install Gnome Tweak Tool.... #---------------------------------------------------# install_tweak() { echo /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Installing Gnome Tweak...Proceeding... !\e[0m" /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" echo sudo apt-get install gnome-tweak-tool -y } #--------------------------------------------------------------------# # Fucntion 3 - Allow console Access ....(seems optional in u18.04) #--------------------------------------------------------------------# allow_console() { echo /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Granting Console Access...Proceeding... !\e[0m" /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" echo sudo sed -i 's/allowed_users=console/allowed_users=anybody/' /etc/X11/Xwrapper.config } #---------------------------------------------------# # Function 4 - create policies exceptions .... #---------------------------------------------------# create_polkit() { echo /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Creating Polkit File...Proceeding... !\e[0m" /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" echo sudo bash -c "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 } #---------------------------------------------------# # Function 5 - Fixing Theme and Extensions .... #---------------------------------------------------# fix_theme() { echo /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Fix Theme and extensions...Proceeding... !\e[0m" /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" echo #Check if script has already run.... if grep -xq "#fixGDM-by-Griffon" /etc/xrdp/startwm.sh; then echo "Skip theme fixing as script has run at least once..." else #Set xRDP session Theme to Ambiance and Icon to Humanity if Ubuntu 18.04.x if [[ "$version" = *"Ubuntu 18.04"* ]]; then sudo sed -i.bak "4 a #fixGDM-by-Griffon\ngnome-shell-extension-tool -e ubuntu-appindicators@ubuntu.com\ngnome-shell-extension-tool -e ubuntu-dock@ubuntu.com\n\nif [ -f ~/.xrdp-fix-theme.txt ]; then\necho 'no action required'\nelse\ngsettings set org.gnome.desktop.interface gtk-theme 'Ambiance'\ngsettings set org.gnome.desktop.interface icon-theme 'Humanity'\necho 'check file for xrdp theme fix' >~/.xrdp-fix-theme.txt\nfi\n" /etc/xrdp/startwm.sh elif [[ "$version" = *"Ubuntu 18.10"* ]]; then sudo sed -i.bak "4 a #fixGDM-by-Griffon\ngnome-shell-extension-tool -e ubuntu-appindicators@ubuntu.com\ngnome-shell-extension-tool -e ubuntu-dock@ubuntu.com\n\nif [ -f ~/.xrdp-fix-theme.txt ]; then\necho 'no action required'\nelse\ngsettings set org.gnome.desktop.interface gtk-theme 'Yaru'\ngsettings set org.gnome.desktop.interface icon-theme 'Yaru'\necho 'check file for xrdp theme fix' >~/.xrdp-fix-theme.txt\nfi\n" /etc/xrdp/startwm.sh else echo "Error Occured somewhere...Exiting..." exit fi fi echo } #---------------------------------------------------# # Function 6- Fixing GDM - As an Option .... #---------------------------------------------------# fix_gdm() { echo /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Fix for GDM Lock Screen color... !\e[0m" /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" echo # Step 1 - Install prereqs for compilation later on sudo apt-get -y install libglib2.0-dev-bin sudo apt-get -y install libxml2-utils # extract gresource info (from url...) workdir=${HOME}/shell-theme if [ ! -d ${workdir}/theme ]; then mkdir -p ${workdir}/theme mkdir -p ${workdir}/theme/icons fi gst=/usr/share/gnome-shell/gnome-shell-theme.gresource for r in `gresource list $gst`; do gresource extract $gst $r >$workdir/${r#\/org\/gnome\/shell/} done /bin/echo -e "\e[1;33m |-| Creating XML File... \e[0m" # create the xml file bash -c "cat >${workdir}/theme/gnome-shell-theme.gresource.xml" <<EOF <?xml version="1.0" encoding="UTF-8"?> <gresources> <gresource prefix="/org/gnome/shell/theme"> <file>calendar-arrow-left.svg</file> <file>calendar-arrow-right.svg</file> <file>calendar-today.svg</file> <file>checkbox-focused.svg</file> <file>checkbox-off-focused.svg</file> <file>checkbox-off.svg</file> <file>checkbox.svg</file> <file>close-window.svg</file> <file>corner-ripple-ltr.png</file> <file>corner-ripple-rtl.png</file> <file>dash-placeholder.svg</file> <file>gnome-shell.css</file> <file>gnome-shell-high-contrast.css</file> <file>no-events.svg</file> <file>no-notifications.svg</file> <file>noise-texture.png</file> <file>page-indicator-active.svg</file> <file>page-indicator-inactive.svg</file> <file>page-indicator-checked.svg</file> <file>page-indicator-hover.svg</file> <file>process-working.svg</file> <file>toggle-off-us.svg</file> <file>toggle-off-intl.svg</file> <file>toggle-on-hc.svg</file> <file>toggle-on-us.svg</file> <file>toggle-on-intl.svg</file> </gresource> </gresources> EOF cd ${workdir}/theme /bin/echo -e "\e[1;33m |-| Modify Css... \e[0m" sed -i -e 's/background: #2e3436/background: #2c00e1/g' ~/shell-theme/theme/gnome-shell.css ##Delete the file noise-texture.png (grey one) rm ${workdir}/theme/noise-texture.png /bin/echo -e "\e[1;33m |-| Download Purple image file... \e[0m" #Download the noise-texture.png with purple background wget http://www.c-nergy.be/downloads/noise-texture.png /bin/echo -e "\e[1;33m |-| Compile Resource File... \e[0m" #Compile file and copy to correct location.... cd ${workdir}/theme glib-compile-resources gnome-shell-theme.gresource.xml /bin/echo -e "\e[1;33m |-| Copy file to target location... \e[0m" # make a backup of the file and copy the file.... sudo cp /usr/share/gnome-shell/gnome-shell-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource.bak sudo cp ${workdir}/theme/gnome-shell-theme.gresource /usr/share/gnome-shell/gnome-shell-theme.gresource echo } #---------------------------------------------------------# # Function 7 - Enable Sound Redirection - As an option.. # #---------------------------------------------------------# enable_sound() { echo /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" /bin/echo -e "\e[1;33m ! Enabling Sound Redirection... !\e[0m" /bin/echo -e "\e[1;33m !---------------------------------------------!\e[0m" echo # Step 1 - Install xrdp-pulseaudio-installer package sudo apt-get install xrdp-pulseaudio-installer -y # Step 2 - Enable Source Code Repository sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename' main restricted' sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename' restricted universe main multiverse' sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename'-updates restricted universe main multiverse' sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename'-backports main restricted universe multiverse' sudo apt-add-repository -s 'deb http://be.archive.ubuntu.com/ubuntu/ '$codename'-security main restricted universe main multiverse' sudo apt-get update # Step 3 - Download pulseaudio source in /tmp directory cd /tmp sudo apt source pulseaudio # Step 4 - Compile pulsever=$(pulseaudio --version | awk '{print $2}') cd /tmp/pulseaudio-$pulsever sudo ./configure # Step 5 - Create xrdp sound modules cd /usr/src/xrdp-pulseaudio-installer sudo make PULSE_DIR="/tmp/pulseaudio-$pulsever" # Step 6 - copy files to correct location sudo install -t "/var/lib/xrdp-pulseaudio-installer" -D -m 644 *.so echo } #--------------------------------------------------------------------------# # -----------------------END Function Section -----------------# #--------------------------------------------------------------------------# #--------------------------------------------------------------------------# #------------ MAIN SCRIPT SECTION -------------------# #--------------------------------------------------------------------------# #---------------------------------------------------# #-- Step 0 - Try to Detect Ubuntu Version.... #---------------------------------------------------# version=$(lsb_release -sd) codename=$(lsb_release -sc) echo /bin/echo -e "\e[1;33m |-| Detecting Ubuntu version \e[0m" if [[ "$version" = *"Ubuntu 18.04"* ]]; then /bin/echo -e "\e[1;32m |-| Ubuntu Version : $version\e[0m" echo elif [[ "$version" = *"Ubuntu 18.10"* ]]; then /bin/echo -e "\e[1;32m |-| Ubuntu Version : $version\e[0m" echo else /bin/echo -e "\e[1;31m !------------------------------------------------------------!\e[0m" /bin/echo -e "\e[1;31m ! Your system is not running Ubuntu 18.04 Edition and later !\e[0m" /bin/echo -e "\e[1;31m ! The script has been tested only on Ubuntu 18.04 and later !\e[0m" /bin/echo -e "\e[1;31m ! The script is exiting... !\e[0m" /bin/echo -e "\e[1;31m !------------------------------------------------------------!\e[0m" echo exit fi /bin/echo -e "\e[1;33m |-| Detecting Parameters \e[0m" #Detect if argument passed if [ "$fixSound" = "yes" ]; then /bin/echo -e "\e[1;32m |-| Sound Redirection Option...: [YES]\e[0m" else /bin/echo -e "\e[1;32m |-| Sound Redirection Option...: [NO]\e[0m" fi if [ "$fixGDM" = "yes" ]; then /bin/echo -e "\e[1;32m |-| gdm fix Option.............: [YES]\e[0m" else /bin/echo -e "\e[1;32m |-| gdm fix Option.............: [NO]\e[0m" fi echo #---------------------------------------------------------# # Step 2 - Executing the installation & config tasks .... # #---------------------------------------------------------# echo /bin/echo -e "\e[1;36m !-------------------------------------------------------------!\e[0m" /bin/echo -e "\e[1;36m ! Installation Process starting.... !\e[0m" /bin/echo -e "\e[1;36m !-------------------------------------------------------------!\e[0m" echo /bin/echo -e "\e[1;33m |-| Proceed with installation..... \e[0m" echo if [[ "$version" = *"Ubuntu 18.04.2"* ]]; then /bin/echo -e "\e[1;32m |-| Ubuntu Version : $version\e[0m" echo /bin/echo -e "\e[1;36m !-------------------------------------------------------------!\e[0m" /bin/echo -e "\e[1;36m ! Applying Installation Patch for Ubuntu 18.04.2 Only !\e[0m" /bin/echo -e "\e[1;36m !-------------------------------------------------------------!\e[0m" echo echo install_xservercore install_xrdp install_tweak allow_console create_polkit fix_theme else install_xrdp install_tweak allow_console create_polkit fix_theme fi if [ "$fixGDM" = "yes" ]; then fix_gdm fi if [ "$fixSound" = "yes" ]; then enable_sound fi #---------------------------------------------------# # Step 9 - Credits .... #---------------------------------------------------# echo /bin/echo -e "\e[1;36m !---------------------------------------------------------------------------!\e[0m" /bin/echo -e "\e[1;36m ! Installation Completed !\e[0m" /bin/echo -e "\e[1;36m ! Please test your xRDP configuration.A Reboot Might be required... !\e[0m" /bin/echo -e "\e[1;36m ! Written by Griffon - March 2019 - Ver 0.5.2 - Std-Xrdp-Install-0.5.2.sh !\e[0m" /bin/echo -e "\e[1;36m !---------------------------------------------------------------------------!\e[0m" echo
How to Use the Script
The script usage has not changed since the previous version. So, instead of repeating the same information, we will summarize the necessary actions and options that are available with this version of the script.
Step 1 – Set Execute Right on the script
Download the Std-Xrdp-install-0.5.2.sh script to your system. You need to mark the script as executable . To do this, perform the following action in a terminal console
chmod +x ~/Downloads/Std-Xrdp-Install-0.5.2.sh
Note : Adjust the path where the Std-Xrdp-Install-0.5.2.sh script to reflect your environment
Step 2 – How to execute the script ?
Like the previous version of the script, you can decide to execute the script with no parameters to perform a “standard installation” or pass some parameters to get more features implemented in your xrdp installation. Before running it, ensure that internet connection is available (so you can download the necessary packages needed for the installation)
Standard way
To perform a standard installation, you execute the script with no parameters. Open a Terminal console, browse to the location where the script has been downloaded and issue the following command
./Std-Xrdp-Install-0.5.2.sh
When the xrdp installation package will start, you be requested to enter your password. Provide the password and proceed with the installation. Wait for completion of the script. The machine will not reboot automatically when done so you can review the actions performed by the script….
Click on Picture for Better Resolution
This installation mode will provide no fix for the GDM visual issue (see here) or no sound redirection (see here). At this stage, you will be able to perform a remote desktop connection and work against your Ubuntu machine. However, if at a later stage, you want to implement the additional features (GDM fix and Sound redirection), you could re-run the script and pass the parameters to enable the options selected. The script will re-run and pass the new parameters and your system should be working with the additional features enabled.
Advanced way
To enable additional features within your remote desktop session, it’s possible to pass some parameters (in any orders) to the script. The script support up to two parameters. When running the script, a user can decide to enable fix for the GDM lock screen or enable sound redirection or enable both options. The following paragraph explain which parameters can be used….
To implement the lock screen fix for GDM within the xrdp session, use this syntax
./Std-Xrdp-Install-0.5.2.sh -g yes
To implement the sound redirection fix within the xrdp session, use this syntax
./Std-Xrdp-Install-0.5.2.sh -s yes
To implement both the sound redirection fix and gdm lock screen fix within the xrdp session, use this syntax
./Std-Xrdp-Install-0.5.2.sh -s yes -g yes
When script execution is completed, the machine will not reboot so you can review the installation and detect possible elements that’s preventing the script execution. At completion, it’s recommended to reboot the machine so the changes made to the system can be applied accordingly.
Step 3 – Test your configuration
After the script has run and after the reboot, first login locally on the machine and ensure that you can use keyboard and mouse. Then, logoff from the system and try to perform a remote connection. If everything is ok, you should be able to access your desktop through remote desktop protocol
Download the Script
Please download the script : Std-Xrdp-Install-0.5.2.zip
Final Notes
This is it for this post !
As usual, we will kindly ask you to try, test and play around with this version and provide feedback and possibly bugs you might have detected.
The script has not changed and only integrate a patch that basically fixing an issue detected with Ubuntu 18.04.2. The script version 0.5.2 has been updated and can be used against Ubuntu 18.04 and Ubuntu 18.10. Please note that the custom script needs also to be updated in order to integrate a minor fix for Ubuntu 18.04.2. The custom script will perform the xrdp installation without any issues but the keyboard and mouse input might get lost afterwards. This is why we want to update the custom script as well. The next post will be providing the updated custom script version. Finally, as Ubuntu 19.04 is on its way, a new version of the script will need to be prepared as well.
As you can see, we are quite busy with xRDP and Ubuntu operating system and plenty of other technologies…It’s becoming too much 🙂
Till next time
See ya
References & History
If you are interested in digging into the history and evolution of the Std-Xrdp-Install script, have a look at the following posts
- Ubuntu 18.04 – Install xRDP the easy way (Scripted Installation – Version 0.2
- xRDP – The Infamous “Authentication Required to Create Managed Color Device” Explained
- xRDP – How to Fix the Infamous system crash popups in Ubuntu 18.04 (and previous versions)
- xRDP – How to Fix Theme issues in Ubuntu 18.04 remote session
- xRDP – Install xRDP the easy way (Scripted Installation – Version 0.3)
- xRDP – How to Fix different lock screen colors in Ubuntu 18.04 remote session
- xRDP – Install xRDP the easy way (Scripted Installation – Version 0.4)
- xRDP – Install xRDP the easy way (Scripted Installation – Version 0.5)
- xRDP – Install xRDP the easy way (Scripted Installation – Version 0.5.1)
Hi!
This version didn’t work either.
It removed a lot of packages, including “ubuntu-desktop” and “xorg”…
Now, at the login screen after trying to connect to RDP from a macOS, there are no fonts.
This “xorgxrdp” dependency issue is clearly an Ubuntu bug that should never happen in an LTS release! Snap FTW?!
Anyway, I think that it might be better to rebuild xrdp / xorgxrdp packages, even back porting it from Disco, to try to link it against new deps…
I didn’t give up on XRDP, yet! I wan this thing. lol
@Thiago,
Just to be complete…. and provide info for other users
I have tested this version with the quick and dirty fix… It will work and you should be able to perform the remote connection to your Ubuntu machine. However, you are right, this version will remove a lot of packages and older packages will be used instead. Even if the display shows removing the ubuntu desktop, actually, nothing happens…. This is not the best way to handle this and we will integrate your packages in our installation script (to be delivered soon 🙂
Till next time
See ya