Differences
This shows you the differences between two versions of the page.
articles:linux_gui_systems_overview [2021-05-01 01:41] – created Tony | articles:linux_gui_systems_overview [2022-04-12 18:57] (current) – Tony | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | **Please note:** This is one of my earlier posts from my blog (Jan 2019), and some stuff is missing from it, but it's here as a reference. I also need to break apart the long sections. | ||
+ | |||
+ | ====== How Do GUI Systems Work In Linux? ====== | ||
+ | |||
+ | |||
+ | A common point of confusion on GNU/Linux systems is the display manager vs desktop environment, | ||
+ | |||
+ | |||
+ | ====== High Level Overview ====== | ||
+ | |||
+ | When the computer starts up, GNU/Linux only ships with a terminal (tty1-tty6). On top of the terminal, we run a graphics server. Historically, | ||
+ | |||
+ | Once X11 starts, all we have is an empty screen with a (blank) cursor. We need what we call a Display Manager to actually manage the display. The display manager (DM) starts with your computer (through systemd) and is what pops up the “login” screen, handles which Desktop Environment to load, session management and on some systems, locking the system. | ||
+ | |||
+ | The desktop environment itself if what we see most frequently. It handles all the applications that are running, maximizing, minimizing, stacking windows and the works. It handles the ‘menu’ or task bar, launching applications and essentially is what we think of as the ‘gui’ of the system. | ||
+ | |||
+ | |||
+ | ====== X11 ====== | ||
+ | |||
+ | X, or commonly known as Xorg is the display server used in most GNU/Linux systems. It’s rather similar to VNC. It makes a local “desktop” and connects to it. X11 is called such as it is the 11th major revision of the X system. | ||
+ | |||
+ | X has support for “screens”, | ||
+ | |||
+ | If you simply start xorg by itself, you’ll just get an empty screen (checker pattern or black) with a crosspoint as a cursor. This is because there isn’t really anything running on that server. You can actually use the computer this way, manually launching programs from the terminal, its not very common (a common use of this is digital signage, where you don’t want any excess bloat – just the one application that needs to run in fullscreen) as you can’t resize or maximize programs. Instead, we use a layer of abstraction, | ||
+ | |||
+ | |||
+ | ====== Display Managers ====== | ||
+ | |||
+ | Technically, | ||
+ | |||
+ | Display managers handle multiple sessions, such as having 2 different desktop environments running (eg: GNOME on tty1, KDE on tty2 and i3 on tty3) together, or, multiple users or instances running at the same time. They also take care of launching and exiting the desktop environments. | ||
+ | |||
+ | Display managers have little functionality to them most of the time. Just manage sessions through logins and logouts. This is usually handled through PAM (pluggable authentication modules). What that does in short, is whenever someone needs to login (or call sudo, or change settings), it simply calls PAM, which decides whether to ask for a password, or fingerprint and such. | ||
+ | |||
+ | Common display managers include: | ||
+ | |||
+ | * GDM (Gnome Display Manager) – Default on GNOME | ||
+ | * SDDM (Simple Desktop Display Manager) – Default on KDE Plasma | ||
+ | * LXDM (Lightweight X11 Display Manager) – Default on LXDE | ||
+ | |||
+ | Actually, you can use any combination of display manager and desktop environment. Personally, I currently use GDM with KDE on my laptop, since GDM handles PAM authentication for the fingerprint reader well, with KDE as my DE of choice. On my desktop, I use LXDM with KDE (or XFCE) due to the lightweight load. | ||
+ | |||
+ | You should also note that on most desktop environments, | ||
+ | |||
+ | |||
+ | ====== Desktop Environments ====== | ||
+ | |||
+ | The desktop environment is the most (easily) visible component of the GUI. It handles the taskbar, menus, maximizing and minimizing applications, | ||
+ | |||
+ | A lot of essential parts of the system ship with a desktop environment. Every (full) desktop environment ships with its own suite of applications for file browsing, settings, web browsing. As such, the same computer can look and behave vastly different among various computers. This is also due to desktop environments being based on either the GTK+ or QT toolkits. | ||
+ | |||
+ | For example, some common desktop environments: | ||
+ | * GNOME (GTK3) | ||
+ | * KDE (QT5) | ||
+ | * XFCE (GTK2/3) | ||
+ | |||
+ | Desktop environments connect with a lot of other system services to perform functions, in a way that is easy for the user to interact with. For example, the volume sliders on most DE’s actually just send commands to PulseAudio, the network manager is usually handled by NetworkManager, | ||
+ | |||
+ | Essentially, | ||
+ | |||
+ | Now even DE’s have a core, which actually handles the applications. There are 2 main types: stacking and tiling. Stacking is what most users are used to. Its used on Windows, MacOS and most environments. Its when open applications ‘stack’ on top of each other. If I open Firefox, then Thunderbird, | ||
+ | |||
+ | Common desktop environments include: | ||
+ | |||
+ | * GNOME | ||
+ | * KDE (now called Plasma) | ||
+ | * LXDE (now LXQT is preferred) | ||
+ | * XFCE | ||
+ | * i3 (or Sway for Wayland) | ||
+ | * MATE (like Gnome2) | ||
+ | * Cinnamon | ||