How to change the window manager on a Raspberry Pi?

X11 is already on your computer

X11 should already be installed on your system. Basically all Linux distros use it. LXDE runs on top of Xorg. Wayland is becoming the popular alternative to X Windows, but is still buggy. I'd wait to switch to it. So, what I'm saying is that you are already using X11. If not, I'd be extremely confused.

What you want to do is install a new windows manager, which is what LXDE is. Enlightenment and Openbox are good alternatives that are lightweight. KDE is my favourite, but it is a little heavier. With the Rasp pi I would stick lightweight though. If you are not going to hook it up to a monitor, then I suggest a headless system and just using the -X option with ssh.

Installing a new Windows Manager

Install the new windows manager then edit .xinitrc so that it starts the correct manager.

For example if you wanted to use KDE then install KDE (#apt-get install kde or #apt-get install kdebase, which is better for a pi but will require a little more set up) and then change your .xinitrc file. You'll see exec startlxde which needs to be changed to exec startkde

The exec command will change for your preference of windows manager.

SSHing into your pi

Now if you are sshing into your pi and want to run a program graphically then you need to do

ssh -X user@raspberry-pi-address:portnumber; gtk-program

This will still work if you are using a headless system without a windows manager. This will also be much faster than using vnc. Basically, if you aren't connecting your pi to a monitor then do this.

The answer is easier than expected. Just install xrdp and I can enjoy a full Linux desktop environment on my Windows machine, without having 20 X-Windows flowing around.

Also, it is important to know the difference between "Window Manager", "Session Manager", "Display Manager". Alas, nobody did explain that I was probably using wrong terms, and I am very confused about them, so I don't know which of these 3 things I need to change to get a "new GUI".