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.