

	\documentclass[a4paper,11pt]{article}
	\usepackage{ngerman}
	\usepackage[latin1]{inputenc}
	\setlength\parskip{\medskipamount}
	\setlength\parindent{0pt}
	\begin{document}

	
 % was_ist_x
 % Copyright Erwin Dogs, Florian Fredegar Haftmann
 % Lizenz: GFDL
 % 
 % $Name: $
 % $Revision: 1.1.2.11 $
 % $Source: /cvsroot/selflinux/tutorial/userbasics/xwindow_basic/was_ist_x/was_ist_x,v $
 % SelfLinux-0.7.2
 %
 % Diese Datei ist Teil von SelfLinux http://www.selflinux.de
 %
 %%% $Id: was_ist_x,v 1.1.2.11 2003/03/01 12:02:30 fboerner Exp $

	\title{Was ist X?}


	
	    \author{Erwin Dogs}
	    %\url{mailto:edogs@t-online.de}
    
	    \author{Florian Fredegar Haftmann}
	    %\url{mailto:florian.haftmann@stud.tum.de}
    

	\maketitle

	
	
	%\ref{../index.tex}
	
		%\ref{ueberblick.tex}
		Überblick über Linux
	\ref{was_ist_x}

    \par{Layout}
    Alexander Fischer
	    %\url{mailto:Selflinux@tbanus.org}
    
    	\par{Lizenz}
	GFDL
 
	\tableofcontents{}

        
	\section{Was ist X?} \label{d13e57}
        
   

   
  \par
  
Wenn man mit Linux arbeitet und sich damit beschäftigt, wird man
früher oder später über den Buchstaben ''X'' stolpern - kurz für
X Window System; dabei handelt es sich um das Kernstück der
grafischen Oberfläche.
   

   
  \par
  
Linux ''an sich'', der Kernel, weiß nichts von Grafik; im Gegensatz
zu weitverbreiteten anderen Betriebssystemen, die die grafische
Oberfläche fest in ihrem Kern integriert haben, ist das bei UNIXen
nicht so, vielmehr läuft das X Window System völlig unabhängig vom
Kernel, es ist sogar völlig unabhängig davon entstanden: \linebreak 
Anfange der 80er-Jahre kam man am MIT darauf, dass es ja ein bisschen
schade ist, wenn man ein echtes Mehrbenutzer- und Multitasking-System
hat, darauf aber nur mit einer Konsole zugreifen kann. Die
naheliegende Idee: mehrere Anwendungen in unterschiedlichen,
bewegbaren Fenstern auf dem gleichen Schirm anzeigen. So entstand X
als akademisches  Projekt; der Quellcode wurde von vielen
kommerziellen UNIX-Anbietern aufgegriffen, fortentwickelt und in ihre
UNIXe integriert. In den 90ern startete das XFree-Projekt mit dem
Ziel, den damaligen Quellcode auf freier Basis auf den neuesten Stand
zu bringen und so X für Linux verfügbar zu  machen - erfolgreich.
   
  \section{Was leistet X und wo liegen seine Grenzen?} \label{d13e95}
        
   

   
  \par
  
Entsprechend der UNIX-Philosophie, ist X keine ''eierlegende
Wollmilchsau'' ohne eine durchschaubare innere Struktur, sondern in
einzelnen  Komponenten aufgegliedert:
   

   \begin{list}{*}{}
    
	\item 
{\bf Der X-Server}; er ist das Programm, das Tastatur- und Mauseingaben
entgegennimmt und die Resultate auf dem Bildschirm anzeigt. Er enthält
dafür die passenden Gerätetreiber. Die Eingaben werden von ihm nicht
ausgewertet, sondern an die betreffenden X-Clients (s. u.)
weitergeleitet, die wiederum die Resultate an den X-Server
zurückliefern.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
{\bf Die X-Clients}; sie sind praktisch die Anwendungen (Textverarbeitung,
Editor, Browser, ...), die die grafische Oberfläche benutzen wollen.
Vom X-Server bekommen sie die Tastatur- und Mauseingaben mitgeteilt,
die sie betreffen, und melden ihm zurück, was auf dem Bildschirm
erscheinen soll. Dazu wird das so genannte X-Protokoll verwendet.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
{\bf Der Windowmanager}; er kümmert sich um das ''drumherum'', z.B.
Fensterrahmen und Fenstermenüs für die Anzeigen der X-Clients, Menüs
auf dem Desktop, Minimieren und Maximieren der Fenster usw. \linebreak 
    
   \end{list}

   
  \par
  
Das Zusammenspiel lässt sich in folgender Grafik zusammenfassen:
   

   Diagramm der Architektur

   
  \par
  
Diese Architektur hat eine ganze Reihe von Vorteilen: \linebreak 
   

   \begin{list}{*}{}
    
	\item 
Auf Systemen, die keine grafische Oberfläche brauchen (z.B.
Webserver), kann sie einfach weggelassen werden, das sie ja vom
Kernel unabhängig ist; das spart Speicher- und Prozessorressourcen.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
Das grafische System kann beliebig herauf- und heruntergefahren
werden (z.B. zu Konfigurationszwecken), ohne das das System
verändert oder angehalten werden muss.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
Die Textkonsolen arbeiten unabhängig von der grafischen Oberfläche;
mit Strg+Alt+F1-F6 kann man auf sie umschalten. Das ist z.B.
sinnvoll, falls man schnell an der Systemkonfiguration was ändern
will und sich somit auf einer Konsole als {\bf root} einloggt. Zum
X-Bildschirm zurück geht es mit Strg+Alt+F7
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
Das X-Protokoll setzt auf dem Internet-Protokoll TCP/IP auf; das
bedeutet, dass Clients und Server auf unterschiedlichen Rechnern
laufen können(!). In einem lokalen Netzwerk, in dem z.B. eine
rechenintensive Ingenieurberechnungssoftware nur von einem einzigen
Rechner verkraftet werden kann, weil alle anderen zu wenig
Hauptspeicher haben, kann man sich einfach von seinem Arbeitsplatz
aus dort einloggen, das Programm starten, und es erscheint auf dem
eigenen Bildschirm, ohne dass man merkt, dass es auf einem ganz
anderen Rechner läuft.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
Die einzelnen X-Clients müssen ''nur'' das X-Protokoll beherrschen,
die Hardware kann ihnen relativ egal sein; das ist zwar heute
allgemein so, aber zur Zeit der Einführung von X war diese Idee
sehr fortschrittlich.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
Der Windowmanager ist beliebig wählbar; das macht das
Erscheinungsbild individuell konfigurierbar.
    
   \end{list}

   
  \par
  
X ist ein barocker Dinosaurier in jeder Linux-Distribution: barock,
weil es sehr viele Features und Tools liefert, die man eigentlich
(außer zum rumspielen und sich darüber amüsieren) nicht braucht;
Dinosaurier, weil auf der anderen Seite seine interne Struktur auf den
technischen Möglichkeiten von vor zwanzig Jahren aufbaut:
   

   \begin{list}{*}{}
    
	\item 
Das X-Protokoll kennt nur einfache Anweisungen wie: ''Zeichne Linie
von A nach B''; moderne Grafikkarten haben viele Möglichkeiten, um den
Bildschirmaufbau durch die Hardware zu beschleunigen, diese können
aufgrund dieser ''Kleinkariertheit'' von X nicht genutzt werden und
liegen brach. Solange X nicht durch ein neues Konzept abgelöst wird,
wird sich daran auch nichts ändern.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
Die Programmierung von X ist damit auch recht umständlich;
mittlerweile gibt es allerdings so genannte GUI-Toolkits, die auf X
aufsetzen und dem Programmierer das Leben recht einfach machen. Als
''Altlast'' gibt es aber viele alte Programme für X, von denen jedes
eine andere Bedienphilosophie verfolgt und die einen kunterbunt
aussehenden Zoo bilden.
    
   \end{list}
   \begin{list}{*}{}
    
	\item 
X hat absolut nichts mit dem Drucksystem zu tun; das ist zwar nicht
unbedingt eine Designschwäche, hat aber zur Folge, dass es zwei paar
Stiefel sind, z.B. eine Schriftart am Bildschirm anzeigen zu können
oder sie auch ausdrucken zu können.
    
   \end{list}
   \begin{list}{*}{} 
    
	\item 
X ist nur ein Verfahren, um mehrere (Text-)fenster anzuzeigen; von
einer grafischen Oberfläche wird aber mehr verlangt. Den Anwender
braucht dies aber wenig zu kümmern, denn im Zusammenspiel mit den
modernen Desktop Environments von Linux liefert X eine
Benutzeroberfläche, die kaum Wünsche offen lässt.
    
   \end{list}
  \section{Was ist ein Desktop Environment?} \label{d13e241}
        
   

   
  \par
  
Was macht ein modernes GUI (Graphical User Interface) aus? Funktionen
wie Copy \& Paste, Kontextmenüs, einheitliches Look \& Feel, Drag \&
Drop, Desktop Panel - alles Dinge, die X selbst nicht bereitstellt.
Dazu wurden die Desktop Environments oder Desktopumgebungen ins Leben
gerufen. Desktopumgebungen bringen darüberhinaus eine ganze Ansammlung
nützlicher Anwendungssoftware bereits mit (z.B. Web-Browser,
Office-Paket, Spiele, Editor...), und bilden somit ein ganzes
Software-Bundle. Zudem verwenden sie einheitliche Grafikbibliotheken
(GUI-Toolkits), mit denen diese Anwendungen programmiert sind, was
einerseits das Aussehen für den Anwender gefällig macht, anderseits
dem Programmierer eine Menge Arbeit abnimmt. Eine Desktopumgebung ist
der Schlüssel zum Erfolg, um ein Betriebssystem einer breiten Masse an
Anwendern zur Verfügung zu stellen, da kaum ein Computeranwender gerne
auf Komfort bei der Benutzung seines Computers verzichten will. Er
möchte
sich im Wesentlichen auf den Kern seiner Bedürfnisse konzentrieren
(z.B. Briefe schreiben, im Internet surfen, Mails senden und
empfangen). Dies mit einem Mausklick schnell und bequem zu machen, mit
einem Klick Textpassagen aus dem Internet in die eigene Ausarbeitung
zu kopieren, Icons auf der Oberfläche, die mit einem Klick eine häufig
genutzte Anwendung starten ist die Leistung eines Desktopsystems. Die
beiden wohl verbreitetesten Desktopsysteme sind
   

   \begin{list}{*}{}
    
	\item 
KDE (Kool Desktop Environment), basierend auf dem GUI-Toolkit QT
    
    
	\item 
Gnome (GNU Network Object Model Environment), basierend auf dem
GUI-Toolkit GTK
    
   \end{list}

   
  \par
  
In unseren Breiten ist durch die starke Präsenz eines Nürnberger
Linux-Distributors KDE das am staerksten verbreitete Desktopsystem. Es
ist so bekannt, daß KDE oft mit Linux gleichgesetzt wird.
   

   
  \par
  
Beide Desktop Environments werden aber mit jeder größeren Distribution
mitgeliefert und gleichen sich sehr im Funktionsumfang.
   

   
  \par
  
Welches ist die geeignetste Oberfläche für mich? - Diese Frage wird
häufig gestellt, und dem Einsteiger würde ich erstmal dazu raten, sich
mit der vorinstallierten Oberfläche vertraut zu machen. Ansonsten gilt
der Grundsatz: ausprobieren! Die Geschmäcker sind verschieden und es
gibt genug Alternativen, die nahezu die persönlichen Wünsche und
Bedürfnisse eines Anwenders abdecken. Neben KDE und Gnome gibt es
alternativ auch noch die Möglichkeit, einen ''klassischen''
Windowmanager wie FVWM zu verwenden - diese bieten zwar geringeren
Komfort, schonen aber die Ressourcen, was z. B. auf einem Rechner, der
überwiegend als Server eingesetzt wird, sinnvoll sein kann.
   
  
	\ref{inhalt.tex}


	\end{document}
	
