How to configure XRDP to start cinnamon as default desktop session

196,811

Solution 1

Found this on the net, on this url: http://sigkillit.com/tag/xrdp

Customize Desktop Environment for xRDP Session

If you do not want to use the default desktop environment, you can customize it by creating a .Xclients file (X is capital!!!) in your home directory to launch the desktop environment you want and making it executable. In order to do this, open a terminal and run one of the following commands

Gnome 3:

echo "gnome-session" > ~/.Xclients
chmod +x ~/.Xclients
sudo systemctl restart xrdp.service

Gnome Fallback:

echo "gnome-fallback" > ~/.Xclients
chmod +x ~/.Xclients
sudo systemctl restart xrdp.service

KDE:

echo "startkde" > ~/.Xclients
chmod +x ~/.Xclients
sudo systemctl restart xrdp.service

MATE:

echo "mate-session" > ~/.Xclients
chmod +x ~/.Xclients
sudo systemctl restart xrdp.service

Cinnamon:

echo "cinnamon" > ~/.Xclients
chmod +x ~/.Xclients
sudo systemctl restart xrdp.service

Xfce4:

echo "startxfce4" > ~/.Xclients
chmod +x ~/.Xclients
sudo systemctl restart xrdp.service

Solution 2

You can start the environment you want only for xrdp (not for local login) in /etc/xrdp/startwm.sh

For example, to start xfce, I use:

#!/bin/sh
if [ -r /etc/default/locale ]; then
  . /etc/default/locale
  export LANG LANGUAGE
fi

# default (= ubuntu)
#. /etc/X11/Xsession

# unity 2d
#echo "gnome-session --session=ubuntu-2d" > ~/.xsession
#. /etc/X11/Xsession

# xfce
startxfce4

exit(0)

Commented out, you can see the commands to start unity (ubuntu session) and unity 2d. You only need to comment out xfce command and add the command to start Cinnamon (I didn't give it because I don't know how to start it manually).

Obs: I agree with you xrdp works better than others remote desktop viewers I tried and it works very well with xfce. I use it from other linux machines too with Remmina client. To use it with xfce, you need to install xubuntu-desktop (sudo apt-get install xubuntu-desktop)

Solution 3

If you're using Lubuntu Desktop (tested on 12.04 LTS)

  1. For lx syntax discovery:

    ps aux | grep lx
    
  2. Implementing lx syntax:

    echo "lxsession -s Lubuntu -e LXDE" > ~/.xsession    
    sudo service xrdp restart
    

Solution 4

First you should have cinnamon on your system :)

Second issue the commands

echo "cinnamon" > ~/.xsession    
sudo service xrdp restart

OR if you like to do it hard:) do the following:

  1. Edit the file /etc/xrdp/startwm.sh

    sudo -H gedit /etc/xrdp/startwm.sh
    
  2. At the end of the file you will find the following lines:

    pre_start
    wm_start
    post_start
    
  3. These are calls to functions above. So in order to make cinnamon the default just put # before wm_start to comment it (to stop calling the function which searches for the sessions)

  4. Add the following line in front of the above three lines gnome-session --session=cinnamon

  5. restart xrdp sudo service xrdp restart

Solution 5

For LXDE:

  1. Install lxde-common:

    sudo apt-get install lxde-common
    
  2. Make changes in /etc/xrdp/startwm.sh like this:

    #!/bin/sh
    
    if [ -r /etc/default/locale ]; then
      . /etc/default/locale
      export LANG LANGUAGE
    fi
    
    #. /etc/X11/Xsession
    
    startlxde
    
Share:
196,811

Related videos on Youtube

Jeff
Author by

Jeff

Updated on September 18, 2022

Comments

  • Jeff
    Jeff over 1 year

    I was wondering if there is a way to make Cinnamon 1.4 the default environment upon logging in to Ubuntu 12.04. I can install Cinnamon 1.4 without any problems, but I am trying to run XRDP to log in from a Windows machine and would like it to start "Cinnamon session" instead of a Unity session by default.

    The question is, How can I tell XRDP to use Cinnamon instead of Unity upon logging in?

    XRDP seems to work much better than any VNC based servers.

    • Reinier Post
      Reinier Post almost 10 years
      By the way, xrdp runs a VNC server.
  • Alex
    Alex over 10 years
    Thanks! Even after messing with .xsession etc, none of it worked. I needed a .Xclients file it seems. This was on Fedora 19.
  • Frank Nocke
    Frank Nocke about 8 years
    The .Xclients file is truly empty? Just created touch ~/.Xclients ?
  • cfinley
    cfinley almost 7 years
    This also works for me on CentOS 7. I've tried many other techniques with no success until this.
  • Matthias W.
    Matthias W. almost 6 years
    Use "cinnamon-session" instead of "cinnamon" to be written to ~/.xsession.
  • Musa Haidari
    Musa Haidari over 5 years
    This seems to be perfect, however on CentOS 7.6 this file does not exist
  • PLA
    PLA over 5 years
    ls /user/share/xessions should be ls /usr/share/xessions
  • Jarad Downing
    Jarad Downing almost 5 years
    @PLA is almost correct, is should be /usr/share/xsessions
  • andrew lorien
    andrew lorien over 4 years
    or for KDE, echo '/usr/bin/startkde' > ~/.xsession
  • Martin Hansen
    Martin Hansen over 3 years
    This does not work for Ubuntu 20.04 anymore. The .Xclients file is completely ignored, no matter what's in there. What worked for me was: echo startxfce4 > ~/.xsession. This example is for Xfce, adjust accordingly if you use a different desktop environment.
  • Martin Hansen
    Martin Hansen over 3 years
    For Cinnamon, it's echo cinnamon-session-cinnamon > ~/.xsession. The command for your desktop environment that needs to be run in .xsession can be found in /usr/share/xsessions. Each installed DE should have its own .desktop file in this folder that contains the start command in the Exec= line.
  • Admin
    Admin almost 2 years
    Your are incorrect. I have no points to downvote. systemctl is part of systemd and it is nothing to do with Fedora. systemd is used in Debian/Ubuntu.