Jarkko's guides
You are here: Home » Linux » Desktop environments

Desktop environments

Display server

The X Window System (also called X) has been the basis for all graphical interfaces on Unix systems.

  • The original X Window System was created at MIT in the 1980s. Version 11, also known as X11, became the standard graphical interface for Unix systems. It is network transparent and forms a hardware-independent platform for building GUIs, but does not dictate what the GUI looks like. At some point X11 became closed source.
  • XFree86: Was a fork of the original X11 (from before the license change) for x86 machines. This was the standard X implementation for Linux for a long time. At some point there was dissatisfaction with the progress and some core developers moved on to start X.Org.
  • X.Org: In the early 2000s this became the dominant X implementation.

Wayland started in 2008 and will likely completely replace X in the long run. It is a new protocol to replace the old X protocol. Its advantage is that it does away with legacy complexities. Modern features like HDR are supported, while X.org may never support it. There is compatibility with X software via XWayland. Some of the major distributions are transitioning to Wayland, but X.Org is also still widely used. Display servers that implement the Wayland protocol are called Wayland compositors.

Copy/pasting text: You can highlight text by dragging over it while holding the left mouse button. It is then automatically copied and you can paste it by pressing the middle mouse button. This method is built into X.

X over the network

X was designed to be network transparent. What that means is that it is possible to log into a remote machine and start a graphical program there that uses your local X display server to show itself. The execution of the program is then happening on the remote machine, there is communication over the network with your local X and the program is visible on your local monitor.

This network communication was originally unencrypted. The modern method is to use X11 forwarding, which is a feature of SSH to send this network communication for X over the same encrypted tunnel as SSH. On the remote Linux machine, you need to have this line in /etc/ssh/sshd_config:

X11Forwarding yes

If you just added it, then you need to restart the SSH server:

sudo systemctl restart sshd

Now you can log into the remote machine from your local Linux machine with:

ssh -X remote_user@remote_host

And then you can start a graphical program on the remote machine.

There are implementations of X that you can run in Windows, such as Xming (lightweight), Cygwin/X and Exceed (paid, used by enterprises). If you have that installed and running, you can log into a remote machine with PuTTY and do the same. Make sure you enable X11 forwarding in the options of PuTTY.

VNC

Another option is VNC (Virtual Network Computing), also called RFB (Remote Frame Buffer), after the protocol. VNC makes it possible to control a remote desktop. It works by sending compressed screenshots over the network. It is an open protocol, so there are multiple VNC programs to choose from.

Window manager

A window manager is software that handles the windows on your desktop: it draws the borders around them and makes it possible to resize, minimize and maximize them. The desktop environments mentioned below all come with a window manager, but there are loads of other options available, including ones that works quite different like tiling window managers. In case of Wayland, the compositor has the task of window management.

There are some handy features that are commonly supported by window managers:

  • Sloppy focus, which means that the window under the mouse cursor has focus. You don't need to click on the window to give it focus.
  • Having multiple (virtual) desktops and switching between them with keyboard shortcuts.
  • Use Alt + left mouse button to grab a window anywhere to move it around.
  • Use Alt + middle mouse button to grab a window (anywhere) and resize it by dragging the mouse.

Widget toolkits

A widget is a basic component to build a GUI program, such as a button, drop-down list or text box. If software uses the same toolkit that gives them a uniform appearance. Commonly used widget toolkits/libraries are:

  • GTK (formerly GTK+) was originally developed for the GIMP image editor. It is used by GNOME.
  • Qt (pronounced “cute”) is used by KDE.

Desktop environment

Two major projects were started in the mid-1990s to create a modern desktop environment and they are still the two main options:

  • GNOME
  • KDE Plasma (originally called just KDE)

KDE offers a conventional desktop and is a safe bet for most users. GNOME has since version 3 changed how the desktop works by introducing the concept of activities, which was a divisive choice.

The next most notable desktop environments are:

  • MATE & Cinnamon, which branched off from GNOME v2 and offer a conventional desktop
  • Xfce & LXQt as lightweight options
Previous Next

ALL THE TOPICS ON THIS WEBSITE:

Linux

Raspberry Pi

Digital room correction

Web design

By Jarkko Huijts
Jarkko's guides

Table of Contents

Table of Contents

  • Desktop environments
    • Display server
    • X over the network
    • VNC
    • Window manager
    • Widget toolkits
    • Desktop environment

LINUX

  • Intro
  • History
  • Open source
  • Distributions
  • Command line
  • Tool help
  • Remote access
  • Directory hierarchy
  • Basic commands
  • Viewing & editing files
  • Processes
  • GNU & other utilities
  • Users & permissions
  • Partitions & mounting
  • System administration
  • Software packages
  • Desktop environments
  • Scripting
  • Audio

AVAILABLE TOPICS

  • Linux
  • Raspberry Pi
  • Digital room correction
  • Web design