GUI and ~ Environments

The Graphical User Interface (GUI) provides visual interaction through windows, icons, menus, and pointers. On Linux, the GUI is a layered stack of software components that together create a usable desktop environment.

The Display Server

The display server manages screen output and input events. Two major protocols exist:

  • X11 (X Window System): The traditional display server for Unix systems. Network-transparent, mature, but complex.
  • Wayland: Modern display server protocol designed to replace X11. Simpler, more secure, with better support for modern hardware.

Compositors

Compositors manage window rendering and effects:

  • Mutter: Used by GNOME.
  • KWin: Used by KDE Plasma.
  • Sway: Wayland compositor compatible with i3 configuration.
  • Weston: Reference Wayland compositor.

Window Managers

Window managers control window placement, appearance, and behaviour:

  • Stacking: Windows overlap like papers on a desk ( Mutter, KWin, Openbox).
  • Tiling: Windows are arranged in non-overlapping tiles (i3, sway, dwm, awesome).
  • Dynamic: Tiling with manual and automatic modes (xmonad, awesome).

Desktop Environments

Desktop environments (DEs) bundle window managers, panels, file managers, and applications:

  • GNOME: Focus on simplicity and accessibility. Uses Mutter and GTK.
  • KDE Plasma: Highly customisable, feature-rich. Uses KWin and Qt.
  • XFCE: Lightweight, traditional desktop. Uses Xfwm and GTK.
  • LXQt: Very lightweight, suitable for older hardware.
  • Cinnamon: Fork of GNOME Shell, traditional desktop metaphor.
  • MATE: Continuation of GNOME 2.

Toolkits and Applications

GUI applications are built with toolkits:

  • GTK: Used by GNOME applications (GIMP, GNOME Files, Evince).
  • Qt: Used by KDE and many cross-platform applications (Krita, VLC, Telegram).
  • EFL: Enlightenment Foundation Libraries, used by the Enlightenment desktop.
  • FLTK: Lightweight toolkit for small applications.

Mobile GUIs

Mobile operating systems use touch-centric interfaces:

  • Android: Linux kernel with Java/Kotlin applications running on ART. Uses SurfaceFlinger for composition.
  • iOS: Darwin kernel (XNU) with Objective-C/Swift applications. Uses Core Animation and Metal.

Configuration and Theming

GUI environments are highly configurable:

  • Themes: Control colours, icons, and widget appearance.
  • Extensions/Plugins: Add functionality (GNOME Shell extensions, KDE Plasma widgets).
  • Keyboard shortcuts: Customisable for power users.
  • Accessibility: Screen readers, magnifiers, and high-contrast themes.