XRDP - Want the KDE Destop Not Xterm...

Just install the current version of Leap Build 38.1 on a Hyper-V VM and using Windows RDP to successfully connect and log in, but It’s the xterm desktop and I was expecting the KDE desktop like before with Build 24.5. How do I make the changes to this?

I’m not sure what you mean by “Xterm desktop”. Is that your own name for the Icewm desktop?

You probably made a mistaken selection during install, and perhaps went with what the installer calls “Generic Desktop”.

Fire up Yast Software Management. Select the “Patterns View” and install the KDE patterns. And then you might have to select that when you next login.

Hi,

The desktop that get’s started with XRDP is not determined in the same way as a console session. It is started using the script in /etc/xrdp/startwm.sh.

There are multiple versions about depending on where it comes from and I run a heavily customised version.

if you look at the function wm_start() in that file (assumes it is there!) you will see what’s happening. It tries to work out the right desktop session to start depending on the OS on several versions I have come across. If none of the tests are met it drops into a simple xterm window which is what I suspect you are getting.

If you can’t figure it out just post the contents of that file and I’ll see what your current version is doing.

Thanks for your help, I don’t know exactly what I did to get it to work but,

  1. I turned on the xrdp-sesman,
  2. added me to serveral groups (audio, cdrom, disk, ftp, flatpak, gdm, lightdm, mysql, nm-openconnect, nm-openvpn, ntadmin, pulse, pulse-access, render, sddm, sshd, system-(coredump, journal, network, resolve), tape, video, vnc).

would you verify any of these settings that actually worked so I may know next time I do an install? Also I installed gnome (Basic, X11), Cinnamon and MATE, but it defaulted to gnome but I want KDE.

One moment while I get that output of that file…

Here is the file contents:


#!/usr/bin/env bash
#
# This script is an example. You might need to edit this script
# depending on your distro if it doesn't work for you.
#
# Uncomment the following line for debug:
# exec xterm


#start the window manager
wm_start()
{
  #To customize system-wise session, edit this file.
  #To customize user specific session, copy this file to $HOME and edit it.
  #Please refer to DefaultWindowManager and UserWindowManager in /etc/xrdp/sesman.ini for more details.

  #The default session is gnome (GNOME Session)
  #sle means SLE-Classic Session

  SESSION="gnome"

  case $SESSION in
    sle)
      if  -r /usr/bin/gnome-session ]; then
        export XDG_SESSION_TYPE=x11
        export GNOME_SHELL_SESSION_MODE=sle-classic
        /usr/bin/gnome-session --session gnome-classic
      elif  -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
    gnome)
      if  -r /usr/bin/gnome-session ]; then
        export XDG_SESSION_TYPE=x11
        /usr/bin/gnome-session
      elif  -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
    plasma)
      if  -r /usr/bin/startplasma-x11 ]; then
        export XDG_SESSION_TYPE=x11
        /usr/bin/startplasma-x11
      elif  -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
    icewm)
      if  -r /usr/bin/icewm-session ]; then
        /usr/bin/icewm-session
      fi
      ;;
  esac
}

#Execution sequence for interactive login shell
#Following pseudo code explains the sequence of execution of these files.
#execute /etc/profile
#IF ~/.bash_profile exists THEN
#    execute ~/.bash_profile
#ELSE
#    IF ~/.bash_login exist THEN
#        execute ~/.bash_login
#    ELSE
#        IF ~/.profile exist THEN
#            execute ~/.profile
#        END IF
#    END IF
#END IF
pre_start()
{
  if  -f /etc/profile ]
  then
    . /etc/profile
  fi
  if  -f ~/.bash_profile ]
  then
    . ~/.bash_profile
  else
    if  -f ~/.bash_login ]
    then
      . ~/.bash_login
    else
      if  -f ~/.profile ]
      then
        . ~/.profile
      fi
    fi
  fi
  return 0
}

#When you logout of the interactive shell, following is the
#sequence of execution:
#IF ~/.bash_logout exists THEN
#    execute ~/.bash_logout
#END IF
post_start()
{
  if  -f ~/.bash_logout ]
  then
    . ~/.bash_logout
  fi
  return 0
}

#. /etc/environment
#export PATH=$PATH
#export LANG=$LANG

# change PATH to be what your environment needs usually what is in
# /etc/environment
#PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games"
#export PATH=$PATH

# for PATH and LANG from /etc/environment
# pam will auto process the environment file if /etc/pam.d/xrdp-sesman
# includes
# auth       required     pam_env.so readenv=1

pre_start
wm_start
post_start

exit 1

It looks the first condition being met before checking the others, so I need to put KDE first right?

I did not study the syntax very well, its the variable SESSION=“gnome” I had to change to plasma. Ok, now I have to get the default theme of KDE’s fonts and icons working, how is that done?

UPDATE: I just re-applied the theme by switch on / off setting/ selecting another theme and back, but the changes do not remain in affect after logging out. How do you fix this?

I did a fresh install and just change the xdrp SESSION=“plasma” variable and everything is Nice!.. :slight_smile:

Thanks for your help!..

OK, glad you worked it all out and it’s all working now.

There are many versions of /etc/xrdp/startwm.sh and I am not sure which ones come from which repositories.

For reference my Leap 15.3 looks like this:

#start the window managerwm_start()
{
  if  -r /etc/default/locale ]; then
    . /etc/default/locale
    export LANG LANGUAGE
  fi
  
  # debian
  if  -r /etc/X11/Xsession ]; then
    pre_start
    . /etc/X11/Xsession
    post_start
    exit 0
  fi


  # el
  if  -r /etc/X11/xinit/Xsession ]; then
    pre_start
    . /etc/X11/xinit/Xsession
    post_start
    exit 0
  fi


  # suse  
  if  -r /etc/X11/xdm/Xsession ]; then
    # since the following script run a user login shell,
    # do not execute the pseudo login shell scripts
    . /etc/X11/xdm/Xsession
    exit 0
  fi
  
  pre_start
  xterm
  post_start