Oberfläche konfigurieren

Sobald das System hochgefahren ist, begrüßt uns ein Display Manager wie zum Beispiel gdm3(1) mit einem Anmeldebildschirm. Nach erfolgreicher Authentifizierung registriert pam_systemd(8) eine Sitzung im Login Daemon und veranlasst den Service-Manager, die Units in /etc/systemd/user und ~/.config/systemd/user zu starten.

Unter Debian stehen divers Arbeitsumgebungen zur Auswahl. Jede bringt eigene Programme für verschiedene Anwendungsgebiete mit. Es spricht nichts dagegen, diese beliebig zu mischen und nach dem individuellen Bedarf zu nutzen.

Standardprogramme beliebter Arbeitsumgebungen
Name Toolkit Compositor Datei Navigator Kalender Foto Musik Video
GNOME GTK+ Mutter Nautilus Epiphany Calendar Loupe Music Totem
KDE Plasma Qt Kwin Dolphin Konqueror Kontact Gwenview Amarok Dragon
Xfce GTK+ Xfwm Thunar Midori Orage Ristretto Parole
Pantheon GTK+ Gala Files Geary Maya Shotwell Noise Audience
LXDE GTK+ Openbox PCMan Gpicview lxmusic lxine
MATE GTK+ Marco Caja Eom
Enlightenment EFL E Entropy Eve Ephoto Emphasis Enna
Windows MFC DWM Explorer Edge Outlook MS Paint Media-Player

Grafik anzeigen

Die graphische Oberfläche (GUI) ist modular aufgebaut. Ein Fenstermanager verwaltet die Fenster der Programme und der Compositor spricht durch den Kernel mit der Hardware. Bildschirme werden automatisch erkannt via EDID.

Render Pipeline

Die meisten Programme verwenden eine Bibliothek für die Darstellung der Bedienelemente. Moderne Bibliothken wie GTK+ oder Qt verwenden die Vektor-Bibliothek Cairo. Diese wiederum überlässt das Zeichnen graphischer Primitiven, Gradienten und Matrix-Transformationen dem hardwarebeschleunigten XRender-Modul des X-Servers.

Dreidimensionale Darstellung erfolgt üblicherweise über die 3D-Grafik-Bibliothek Mesa. Diese implementiert nach außen die OpenGL-Schnittstelle und nutzt intern das DRI-Modul des X-Servers. Wenn keine Hardware-Beschleunigung möglich ist, zeichnen sowohl Cairo als auch Mesa die Pixelgrafiken selbst.

Eine Liste der Grafikkarten und Bildschirme erhält man mit:

inxi -G
Graphics:  Device-1: Intel CoffeeLake-U GT3e [Iris Plus Graphics 655] driver: i915 v: kernel 
           Display: x11 server: X.Org 1.20.11 driver: loaded: modesetting resolution: 3840x2160~60Hz 
           OpenGL: renderer: Mesa Intel Iris Plus Graphics 655 (CFL GT3) v: 4.6 Mesa 20.3.5 

Audio abspielen

PipeWire koordiniert PCM-Datenströme zwischen diversen Quellen (GStreamer-, Xine-, ALSA- und OSS-Clients) und Senken (Soundkarte, Netzwerk, RTP-Empfänger).

Datenfluss von der Quelle zur Senke

Eine Liste der Wiedergabegeräte erhält man mit:

aplay -l
Karte 0: PCH [HDA Intel PCH], Gerät 0: ALC233 Analog [ALC233 Analog]
...

Dokumente drucken

CUPS unterstützt das IPP für lokal angeschlossene und netzwerkbasierte Drucker. Der Daemon lauscht auf http://localhost:631. Benutzer in der Gruppe lpadmin dürfen Drucker verwalten. In der Regel werden netzwerkbasierte Drucker automatisch erkannt.

Verarbeitung von Druckaufträgen
Dialog
Fragt den Benutzer nach dem zu verwendenen Drucker und stellt die in der PPD aufgeführten Optionen wie Skalierung, Papierformat oder Duplexdruck zur Auswahl.
Daemon
Akzeptiert Aufträge vom Druckdialog, reiht diese in die Warteschlange ein und koordiniert die weitere Verarbeitung.
Filter
Transformiert verschiedene Dateiformate in das für den Drucker am besten geeignete Format, zum Beispiel PostScript, PCL oder SPL.
Treiber
Verpackt die Rohdaten in eine für den Drucker verständliche Sprache.
Unterbau
Sendet die Daten über eine USB- oder Netzwerk-Schnittstelle an den Drucker.
Drucker
Gibt die Daten auf Papier oder einem anderen Medium aus.

Eine Liste der verfügbaren Drucker bekommt man mit:

lpstat -a
gutenberg akzeptiert anfragen seit Mi 24 Jul 2019 11:35:41 CEST

Ressourcen finden

Das Freedesktop-Projekt (ehemals XDG) definiert systemweite Standardverzeichnisse für folgende Ressourcen:

Standardverzeichnisse für Ressourcen
Ressource System Benutzer
Arbeitsumgebungen /usr/share/xsessions
Anwendungsdaten XDG_DATA_DIRS XDG_DATA_HOME
/usr/share ~/.local/share
Programmstarter /usr/share/applications ~/.local/share/applications
Schriften /usr/share/fonts ~/.local/share/fonts
Piktogramme /usr/share/icons ~/.local/share/icons
Oberflächen-Stile /usr/share/themes ~/.local/share/themes
Konfiguration XDG_CONFIG_DIRS XDG_CONFIG_HOME
/etc/xdg ~/.config
Menüs /etc/xdg/menu ~/.config/menus
Autostarts /etc/xdg/autostart ~/.config/autostart
Verzeichnisse /etc/xdg/user-dirs.defaults ~/.config/user-dirs.dirs
Programme XDG_BIN_DIRS XDG_BIN_HOME
/usr/bin ~/.local/bin
Bibliotheken XDG_LIB_DIRS XDG_LIB_HOME
/usr/lib ~/.local/lib
Temporäre Daten XDG_RUNTIME_DIR $XDG_CACHE_HOME
/run/user/Uid ~/.cache

Wo Programme ihre Dokumente, Musik, Videos und Fotos suchen, lässt sich in ~/.config/user-dirs.dirs anpassen oder per Kommando anpassen und abfragen.

xdg-user-dirs-update --set MUSIC ~/music
xdg-user-dir MUSIC
/home/phrank/music

Um zum Beispiel alle dicktengleichen Schriften auszugeben:

fc-list :spacing=mono
/usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf: DejaVu Sans Mono:style=Book
/usr/share/fonts/truetype/cmu/cmunit.ttf: CMU Typewriter Text:style=Italic
/usr/share/fonts/X11/Type1/c0419bt_.pfb: Courier 10 Pitch:style=Regular
…

Anwendungen und Daten verknpüfen

Das System merkt sich in /usr/share/applications/mimeinfo.cache welches Programm welche Dateitypen öffnet. Individuelle Einstellungen sind über ~/.config/mimeapps.list möglich.

~/.config/mimeapps.list
[Default Applications] text/html=firefox.desktop image/jpeg=eog.desktop audio/opus=vlc.desktop video/mp4=vlc.desktop; … [Added Associations] application/pdf=evince.desktop; …

Den bevorzugten Navigator erfährt man zum Beispiel mit:

xdg-settings get default-web-browser
firefox.desktop

Den Medientyp einer Datei bestimmen:

xdg-mime query filetype index.html
text/html

Die damit verknüpfte Anwendung abfragen:

xdg-mime query default text/html
firefox.desktop

Man kann auch auf der Kommandozeile eine Datei mit dem bevorzugten Programm öffnen. Folgendes Beispiel würde zum Beispiel die Seite im Firefox anzeigen.

xdg-open index.html

Außerdam kann man eine neue Nachricht vorbereiten.

xdg-email --subject "Wichtig" --body "Hallo Alice" alice@example.org

Und zu guter letzt den Bildschirm sperren und Kaffee holen:

xdg-screensaver lock

Programme im Menü verankern

Eine Desktop-Datei verknüpft einen Programmaufruf mit Name, Kommentar und Piktogramm.

Name.desktop
[Desktop Entry] Version=1.0 Name=ShortName Comment=Description Icon=File Exec=Program Terminal=false Type=Application Categories=Utility;Application;

Eigene Desktop-Dateien lassen sich als Starter auf dem Desktop…

xdg-desktop-icon install Name.desktop

…und/oder im Menü zu verankern. Diese landen im Verzeichnis ~/.local/share/applications.

xdg-desktop-menu install Name.desktop

Eigene Piktogramme lassen sich auch unter einem Namen registrieren.

xdg-icon-resource install --size 256 File.png Name

Diese landen im Verzeichnis ~/.local/share/icons/hicolor/256x256/apps/.

Literatur

  1. Debian Wiki: Debian Desktop How To
  2. Arch Wiki: HiDPI
  3. Kev Quirk: Is Dark Mode Such A Good Idea?, 2020
  4. Evan Klitzke: Lobotomizing GNOME, 2018
  5. Freedesktop: Association between MIME types and applications
  6. Freedesktop: XDG Base Directory Specification
  7. Freedesktop: Desktop Entry Specification