1. Index
  2. Debian
  3. Desktop
  4. Heimserver
  5. Webserver

Sitzung verwalten

Sobald das System hochgefahren ist und einen Display Manager wie zum Beispiel gdm3(1) gestartet hat, begrüßt es uns mit einem Anmeldebildschirm. Nach erfolgreicher Anmeldung durch Eingabe eines korrekten Passworts und startet die Desktop-Umgebung. pam_systemd(8) registriert eine Sitzung im Login Daemon, und veranlasst den Service-Manager, die Units in ~/.config/systemd/user etc. zu starten.

Nachrichten verarbeiten

Der Kernel meldet Hotplug-Ereignisse, also wenn Geräte angeschlossen oder entfernt werden, per netlink(7)-Socket an den udev(7)-Daemon. Dieser legt Gerätedateien unter /dev an und informiert den dbus-daemon(1). UPower überwacht den Batteristatus und UDisks montiert Datenträger. So kann zum Beispiel beim Einstecken eines USB-Geräts die grafische Oberfläche ein Symbol auf dem Desktop anzeigen.

Benachrichtigung beim Einstecken eines Geräts
Programm Kommando Operand Beschreibung
busctl help Hilfe anzeigen
list Registrierte Namen auflisten
status [Service] Eigenschaften eines Dienstes anzeigen
monitor [Service …] Nachrichten eines Dienstes beobachten
capture [Service …] Nachrichten im pcap-Format aufzeichnen
tree [Service …] Baumstruktur eines Dienstes anzeigen
introspect Service Object [Interface]
call Service Object Interface Method [Signature [Argument …]]
set-property Service Object Interface Property Signature Argument
get-property Service Object Interface Property ...

Beispiel

busctl tree org.freedesktop.UPower
└─/org
  └─/org/freedesktop
    └─/org/freedesktop/UPower
      ├─/org/freedesktop/UPower/KbdBacklight
      ├─/org/freedesktop/UPower/Wakeups
      └─/org/freedesktop/UPower/devices
        ├─/org/freedesktop/UPower/devices/DisplayDevice
        ├─/org/freedesktop/UPower/devices/battery_BAT0
        └─/org/freedesktop/UPower/devices/line_power_AC

Grafik anzeigen

Die graphische Oberfläche (GUI) ist modular aufgebaut. Ein Fenstermanager verwaltet die Fenster der Programme und der Compositor spricht mit der Hardware, die per EDID. automatisch erkannt wird.

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, rendern sowohl Cairo als auch Mesa die Pixelgrafiken selbst.

Ton abspielen

PulseAudio 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

Programme, die ALSA direkt verwenden, werden zu PulseAudio umgeleitet.

/etc/asound.conf
pcm.default pulse ctl.default pulse

PulseAudio wiederum kann Datenströme auf einen anderen Rechner umleiten.

/etc/pulse/client.conf
set default-server Host

Oder temporär:

export PULSE_SERVER=Host

Der Client findet verfügbare Server per DNS-SD und sendet Daten per RTP.

/etc/pulse/default.pa
load-module module-zeroconf-discover load-module module-null-sink sink_name=rtp load-module module-rtp-send source=rtp.monitor set-default-sink rtp

Der Server sollte seine Dienste per ZeroConf anpreisen

/etc/pulse/default.pa
load-module module-zeroconf-publish load-module module-rtp-recv

Dokumente drucken

CUPS unterstützt das IPP für lokal angeschlossene und netzwerkbasierte Drucker. Der Daemon lauscht auf Port 631.

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.

Ein normaler Benutzer bekommt die nötigen Rechte für die Verwaltung von Druckern.

adduser User lpadmin

Dieser kann Drucker dann entweder auf der Kommandozeile, mit Hilfe der grafischen Oberfläche, oder webbasiert unter http://localhost:631/ verwalten. Eine Liste der verfügbaren Drucker bekommt man mit:

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

Papierformat festlegen

/etc/papersize
a4

Literatur

  1. TuxRadar: How it works: Linux audio explained
  2. Freedesktop: The Perfect Setup
  3. Victor Gaydov: PulseAudio under the hood
  4. Linux Foundation: OpenPrinting
  5. Hewlett Packard: HPLIP
  6. EFF: DocuColor Tracking Dot Decoding Guide