Running X11 - 4. X11 starten
4.1 Den Display-Server starten
X11 kann unter Mac OS X auf drei Arten gestartet werden.
Die erste Art ist die X11-Applikation zu starten, d. h. ein
Doppelklick auf das Programm im Finder. Unter 10.5-10.7 ist das
typischerweise
/Applications/Utilities/X11(.app)
, oder
/Applications/Utilities/XQuartz(.app)
, wenn
man Xquartz benutzt (also unter 10.8).
Die zweite Art ist die Eingabe des Kommandos startx
in
einem Terminalfenster.
Die dritte Art ist, einfach ein Programm in einem Terminalfenster zu starten, das X11 benötigt. Ab 10.5 startet dies automatisch einen X11-Server.
4.2 Modifikationen des Starts über das .xinitrc.d Verzeichnis
Für derzeitige Versionen von X11 ist die bevorzugte Methode seinen
Start zu modifizieren, ein Verzeichnis
.xinitrc.d
im $HOME Verzeichnis anzulegen und
mit ausführbaren Skripten zu füllen, die die Programme starten,
die man beim Start haben möchte, einschließlich
Fensterverwaltungen.
Wichtig: Hinter Programmen, die keine Fensterverwaltungen
sind, muss ein '&'stehen. Andernfalls blockieren sie die
Ausführung anderer Programme, auch Fensterverwaltungen.
Fensterverwaltungen dürfen kein '&' hinter ihrem
Namen haben, ansonsten bleiben sie nicht laufen, außer es gibt
eine Sessionverwaltung, die nach ihr startet. Das Programm
xinit
interpretiert diese Situation so, dass
nach dem Ende der Session auch der X-Server beendet werden soll.
Beispiel: Soll die Fensterverwaltung
WindowMaker
mit dem Start des X11-Server
starten, geben sie folgende Komanndos ein:
mkdir -p $HOME/.xinitrc.d nano $HOME/.xinitrc.d/94-wmaker.sh
Sie können auch ihren Lieblingseditor statt nano verwenden.
Tragen sie folgenden Inhalt in 94-wmaker.sh
ein:
. /opt/sw/bin/init.sh quartz-wm --only-proxy & exec wmaker
Speichern sie die Datei und führen sie folgendes Kommando aus:
chmod a+x 94-wmaker.sh
Damit wird das Skript ausführbar. (quartz-wm
--only-proxy
wird in einem späteren Abschnitt diskutiert).
Beispiel: Soll das Programm xlogo
mit dem
Start des X11-Server starten, geben sie folgende Komanndos ein:
mkdir -p $HOME/.xinitrc.d nano $HOME/.xinitrc.d/74-xlogo.sh
(wie oben: wenn sie wollen, nehmen sie ihren Lieblingseditor).
Tragen sie folgenden Inhalt in 74-xlogo.sh
ein:
. /opt/sw/bin/init.sh xlogo &
Speichern sie die Datei und führen sie folgendes Kommando aus:
chmod a+x 74-xlogo.sh
Damit wird das Skript ausführbar.
Erstellen sie die beiden Skripts, resultiert daraus, dass beim
Start von X11 das Programm xlogo
ausgeführt
wird und dann die Fensterverwaltungwmaker
.
Beispiel: Vollständige GNOME-Session. Erzeugen sie die
ausführbare Datei 94-gnome-session.sh
mit
folgendem Inhalt:
. /opt/sw/bin/init.sh quartz-wm --only-proxy & metacity & exec gnome-session
Beispiel: "rootless" GNOME-Session. Erzeugen sie die ausführbare
Datei 94-gnome-panel.sh
mit folgendem Inhalt:
. /opt/sw/bin/init.sh quartz-wm --only-proxy & metacity & exec gnome-panel
Beispiel: KDE3. Erzeugen sie die ausführbare Datei
94-startkde.sh
mit folgendem Inhalt:
. /opt/sw/bin/init.sh exec startkde
(startkde startet automatisch eine Fensterverwaltung und nutzt
quartz-wm --only-proxy
)
Beispiel: KDE4. Erzeugen sie die ausführbare Datei
94-startkde.sh
mit folgendem Inhalt:
. /opt/sw/bin/init.sh exec /opt/sw/opt/kde4/x11/bin/startkde
Beachte:
-
Beginnen sie jedes Skript mit
. /opt/sw/bin/init.sh
. Damit wird sicher gestellt, dass auch Programme aus dem Fink-Baum gefunden werden. - Die Skirpte werden in ASCII Reihenfolge ausgeführt. Benutzen sie Prefixes, um die Reihenfolge zu ändern, wie oben mit '74'und '94'.
-
Die Skripte müssen ausführbar sein und die Datei-Endung
.sh
haben. Mit einer Änderung der "execute permissions" kann man die Ausführung der Skripte und Programme steuern, ohne die Skripte zu löschen. -
Fink's
xinitrc
Paket, das in den Abhängigkeitsketten von GNOME und KDE ist, überschreibt das voreingestellte Verhalten von X11, zum Beispiel das für Nutzer-Modifikationen. Wir empfehlen, dieses Verhalten wieder einzuschalten, wie im Abschnitt über das Fink Paket 'xinitrc' beschrieben.
4.3 Die Datei .xinitrc
Notiz: Es ist besser, mit Skripten im Verzeichnis $HOME/.xinitrc.d zu arbeiten.
Existiert eine Datei mit dem Namen .xinitrc
im
Heimatverzeichnis, wird sie benutzt, um X-Klienten zu starten, eine
Fensterverwaltung, einige xterm Terminals oder eine
Schreibtischumgebung wie GNOME. Die Datei
.xinitrc
ist ein
/bin/sh
-Skript mit den Kommandos dafür. Das
übliche #!/bin/sh
in der ersten Zeile wird nicht
benötigt; die Datei muss auch nicht ausführbar sein.
xinit
wird die Datei immer mit der Shell
/bin/sh
ausführen.
Gibt es keine Datei .xinitrc
im
Heimat-Verzeichnis und auch kein Verzeichnis $HOME/.xinitrc.d, dann benutzt X11 die
Voreinstellungen in der Datei
/usr/X11/lib/X11/xinit/xinitrc
. Die
Voreinstellungen kann man auch gut als Ausgangspunkt für eine
eigene Datei .xinitrc verwenden:
cp /usr/X11/lib/X11/xinit/xinitrc ~/.xinitrc
Damit auch Fink-Programme in .xinitrc
funktionieren, sollte gleich am Anfang der Datei die Zeile .
/opt/sw/bin/init.sh
stehen, damit die Umgebung korrekt
aufgesetzt wird.
Man kann so ziemlich alles in die Datei
.xinitrc
schreiben, aber einiges sollte man
dabei doch beachten. Erstens: Die Shell, die die Datei abarbeitet,
wartet bis bei jedem Programm bis es beendet wird, bevor das
nächste Programm gestartet wird. Sollen mehrere Programme
parallel laufen, muss man der Shell mitteilen, sie in den
Hintergrund zu verschieben, indem man am Ende der Zeile ein
&
anhängt.
Zweitens: xinit
Wartet bis das Skript in
.xinitrc
beendet ist und inerpretiert diese
Situation, dass die Session beendet ist und der X-Server jetzt auch
beendet werden soll. Dies bedeutet, dass das letzte Kommando in
.xinitrc
nicht im Hintergrund ablaufen sollte
und ein langlebiges Programm sein sollte. Üblicherweise ist es
die Fensterverwaltung oder die Schreibtischumgebung. Tatsächlich
gehen die meisten Fensterverwaltungen und Schreibtischumgebungen
davon aus, dass xinit
auf ihr Ende wartet und dies
für den "Log Out" Eintrag in ihren Menus nutzen. (Notiz: Man kann
etwas Speicher und CPU-Last zu sparen, wenn man exec
an den Anfang der letzten Zeile schreibt, so wie in den folgenden
Beispielen.)
Beispiel: Schalte die X11-Klingel aus, starte einige Klienten und zum Schluss die Fensterverwaltung "Enlightenment":
. /opt/sw/bin/init.sh xset b off xclock -geometry -0+0 & xterm & xterm & exec enlightenment
Beispiel: GNOME starten:
. /opt/sw/bin/init.sh quartz-wm --only-proxy & metacity & exec gnome-session
Zum Schluss: KDE3 starten:
. /opt/sw/bin/init.sh exec startkde
4.4 Das Fink-Paket 'xinitrc'
Manche Fink-Pakete müssen beim Start von X11 einige Aktionen
ausführen. Dafür gibt es ein Paket namens xinitrc
(zugegebenermaßen etwas verwirrend). Eine Nebenwirkung bei der
Installation dieses Pakets, das in der Abhängigkeitskette von
GNOME und KDE ist, dass die voreingestellte Ausführung der Skripte
in $HOME/.xinitrc.d
. Es gibt einige Methoden,
mit denen man den Start von X11 modifizieren kann und
Fink-Paketen erlauben kann, ihre Start-Aktionen auszuführen:
-
Das Paket
xinitrc
enthält Einsprungspunkte für Administratoren. Erzeugen sie die Datei/opt/sw/etc/xinitrc-last-hook
als Administrator mit folgendem Inhalt:#!/bin/sh . /usr/X11/lib/X11/xinit/xinitrc.d/98-user.sh
Damit hat man das urspüngliche Verhalten, dass im Verzeichnis
$HOME/.xinitrc.d
nach ausführbaren Skripten gesucht wird. -
Erzeugen sie die Datei
$HOME/.xinitrc
wie im Abschnitt .xinitrc beschrieben. Finks Paketxinitrc
überschreibt die Voreinstellung des Systems mit seiner eigenen Version und damit nutzt man die Version von Fink.Der richtige Platz für zusätzliche Programme, die sofort ausgeführt werden sollen, ist vor folgender Zeile:
# start the window manager
Weiter: 5. Andere Möglichkeiten mit X11