The desktop environment

From SprezzOSWiki

Depending on the graphics capabilities of your machine, it might be possible to drive a user interface enjoying pixel- rather than character cell-level resolution. These are typically referred to as GUIs (Graphical User Interfaces), and have underpinned the vast majority of interactive computing for many years. The primary distinguishing features of GUIs include:

  • higher resolutions (and perhaps more colors) than character displays of the same size, and
  • deep support for interactive job control ("multitasking") via built-in z-axes with well-integrated controls.

GUIs

Most GUIs are minor variations on idioms of the desktop metaphor, that is:

  • Interactive applications present sets of distinct windows, objects of varying opacity taking dynamic size in 2 dimensions
    • The contents of the windows, subject to overlap, are controlled by the application
    • Decorators of the windows, subject to overlap, are usually controlled by the application
    • Graphic presentation is typically influenced by a theme -- an instance of a presentation engine's parameters
  • Windows are partitioned among workspaces, 2D objects having size corresponding to the display
    • Each workspace provides a z-axis on which its windows are at least partially ordered
    • Some systems support association of windows with more than one workspace at a time
  • A root window
  • In every system known to this author, a total order is induced upon the workspaces, and only one workspace is shown at a time

GUIs are by no means always available, for instance when using a serial terminal, when recovering during a broken boot, or when they are not installed (by default, SprezzOS 1 does not install any GUI components). In this case, interaction is limited to a pure shell environment.

A modern GUI can be composed from various projects' elements, to the user's taste. What follows is a high-level description of a desktop GUI stack.

Rasterizer

The standard compositor/rasterizer on Linux is currently X.org atop a mix of kernel- and userspace Direct Rendering Infrastructure, plus a compositing window manager. Alternatives include Wayland and DirectFB.

  • A rasterizer provides an interface by which applications can render to a framebuffer.
    • Without a rasterizer, all applications must speak cooperatively to the physical framebuffer.
  • A compositing rasterizer provides virtual framebuffers to applications, which are projected via some transform to the true framebuffer.
    • In the absence of a composting rasterizer, applications must cooperatively implement effects along the Z axis

      One might say that non-destructive overlapping is a Z-axis effect. While this is true, non-destructive overlapping can be implemented via recoverable, linear XOR transforms, and thus the overlapping bitmap itself is sufficient information to recover the original bitmap. Thus the distinction is meaningful. - nickblack.atl (talk)

Display Managers

A display manager is essentially a graphic equivalent of the console environment's getty apparata. They typically run independently of window managers (indeed, they are more tightly bound to desktop environments and session managers than window managers), with privileges similar to those of the login process. XDMCP can be used to communicate with a display manager running remotely, though I wouldn't recommend it. Sprezzatech currently recommends use of LightDM, unless one is making use of the KDE desktop environment, in which case KDM is recommended. Please note that GDM is recommended by the GNOME team for GNOME sessions, though our experience with LightDM in this capacity has been very positive. Note that only LightDM, Orthos, and XDM aim to support desktop environment independence, facilitating a single display manager experience across multiple session types. All display managers known to this author allow for selection from various session types, when present.

Comparison of Display Managers
Name Package Project of origin Notes
LightDM light-dm X.org GTK/KDE/Razor-QT/Unity frontends
GDM3 gdm3 GNOME 3 Theming completely incompatible with GDM2
GDM2 gdm GNOME 2
KDM kdm KDE Uses QT

Themeable using KDE GUI tools

Orthos orthos Independent Pure OpenGL, highly configurable
XDM xdm X11R3 As ugly as they come

Window Managers

Desktop Environments

Theming

SprezzOS's default theme is Allotrion.

See Also

{{#switch:|subgroup|child=|none=|#default=

}}{{#ifeq:|Template|{{#ifeq:|child||{{#ifeq:|subgroup||{{#switch:the desktop environment

|doc
|sandbox
|testcases =
|#default = {{#switch:
 |plainlist
 |hlist
 |hlist hnum
 |hlist vcard
 |vcard hlist = 
 |#default = hlist
 }}
}}

}}}}}}