2004-04-03
Autor: Markus Raab

Ich habe die Idee mittlerweilen wieder selbst verworfen.
Problem: Keine Unterstützung von Distributionen. Außerdem
gibt es /etc/X11/Xsession.d bzw. ~/.kde/env.
Für das starten der einzelnen Applikationen kann man
~/.kde/Autostart oder ein Startup-Skript verwenden.
Mehr Info dazu unter Ordner Kde/environment.

xinit.d

Das Runlevelkonzept von System V ist genial, in diesem Dokument wird
ein stark vereinfachtes Konzept für das X-System vorgestellt.
Es ermöglicht beim Start des X-Servers alle benötigten Server und
Programme die von X abhängen zu starten. Diese Skripte können auch
dann zum manuellen starten, stoppen oder neustarten verwendet werden.

Ordnerstruktur

/etc/xinit.d
Dieser Ordner beeinhaltet alle Skripte.

/etc/rcX.d
Dieser Ordner beeinhaltet Links zu den Skripts die gestartet werden sollen.

Skripte starten

Das Skript /etc/xinit.d/rc startet alle benötigtenn Skripte. Das Skript
an sich ist extrem einfach:

#!/bin/sh

# Run all Skripts in /etc/rcX.d

for i in /etc/rcX.d/*
do
        sh "$i" start &
done
#ENDE

Für Debugzwecke ist es zu empfehlen, sh mit echo zu vertauschen, bis man
das gewünschte erreicht hat.

Mit dem & (UND) am Ende werden alle Prozesse "gleichzeitig" gestartet.
Wenn also eine Bedingung erfüllt sein muss, damit ein Befehl funktioniert,
so muss beides in dem selben Startskript untergebracht sein. Andere
Möglichkeit wäre, nicht mit dem & zu arbeiten, oder mittels "Start Dateien"
(Startbedingung: Überprüfen ob eine bestimmte Datei angelegt).

Startskripte

Im Ordner /etc/xinit.d kann man nun beliebig viele Startskripte anlegen.
Es ist zu empfehlen, dass sie auf die Parameter start/stop/restart reagieren,
da man dann manuell die Skripte besser bedienen kann.

Links

Damit diese zwei Beispielskripte auch ausgeführt werden, fehlen noch zwei Punkte:
Sie müssen in /etc/rcX.d verlinkt werden und das Hauptskript muß an der richtigen
Stelle ausgeführt werden.

Verlinken funktioniert einfach mit dem Befehl ln.
ln -s /etc/xinit.d/xconsole /etc/rcX.d/12xconsole
ln -s /etc/xinit.d/signature /etc/rcX.d/02signature

Die Zahlen am Beginn sind die Reihenfolge in der das ganze Ausgeführt wird.
signature wird immer früher als xconsole gestaret. Bei gleichen Zahlen
entscheidet welches Wort früher in alfabethischer Reihenfolge dran kommt.

Startup

Es muß noch das Skript /etc/xinit.d/rc ausgeführt werden, damit alle Skripte ausgeführt
werden. Dafür gibt es mehrere Möglichkeiten.

a.) kde-Autostart
Wenn sie kde Verwenden können sie eine Ausführbare Datei in $HOME/.kde/Autostart legen,
mit folgendem Inhalt:
[Desktop Entry]
Comment=
Comment[de]=
Encoding=UTF-8
Exec='/etc/xinit.d/rc'
GenericName=
GenericName[de]=
Icon=
MimeType=
Name=kde-startup
Name[de]=kde-startup
Path=
ServiceTypes=
SwallowExec=
SwallowTitle=
Terminal=false
TerminalOptions=
Type=Application
X-KDE-SubstituteUID=false
X-KDE-Username=

b.) Wenn sie den X-Server über startx ausführen, muss /etc/xinit.d/rc am Ende
gestartet werden in den Skripten von startx.

c.) Anmeldungsmanger bietet meist eine Startdatei an. Schreiben sie das Skript
in die globale oder benutzer-spezifische Startdatei. Referieren sie dazu die
Dokumentation.

KDE "schneller starten"

Auf langsameren Computer (wie meiner) ist es ein Problem, dass man zuerst 5
Minuten warten muß, bis er hochgefahren ist, und dann weitere 5 Minuten warten
muß bis kde mit allen möglichen Programmen gestartet hat. Genau dazwischen
muß man ein Passwort eingeben.
Idee: Man lässt den Computer einfach komplett starten mit kde und sperrt
den Bildschirm ab.

Realisierung:
-) xlock in xinit.d

Aus Sicherheitsgründen muß der Bildschirm als ersters gesperrt werden. Folgendes
Skript könnte dafür verwendet werden (für kde!, für Gnome wird das herkömmliche
xlock die richtige Wahl sein).

#!/bin/sh
dcop kdesktop KScreensaverIface lock
#ENDE

Dieser dcop Befehl sperrt den Bildschirm.

-) Automatischer Login

Unter Systemverwaltung -> Anmeldungsmanager -> (Unterfenster) -> Vereinfachung
können sie konfigurieren, dass ein Benutzer automatisch angeloggt wird.


Startskripte

1.) xmms mit erhöhter Priorität starten
Xmms sollte man nicht als root starten. Eine andere Möglichkeit wäre xmms mit
hilfe von renice die Echtzeitpriorität zuzusprechen.

Der erste Schritt ist, seinem Benutzer renice ausführen zu lassen. Eine
gute Möglichkeit dafür ist sudo, welches mit dem Kommando visudo (als root)
konfiguriert wird. Folgende Zeilen sind einzutragen:

##############
User_Alias ADMIN = markus
Cmnd_Alias NICE = /usr/bin/nice,        /usr/bin/renice
ADMIN   ALL = NICE
##############

Bei User_Alias sind natürlich alle Benutzer einzutragen, die das Recht dazu haben
sollen das Programm auszuführen. Nun zu dem xmms startskript:

#############
#xmms starten
kstart --desktop 1 xmms
sleep 1

#xmms renicen
for i in `ps h -o pid -C xmms`
do
        sudo renice -19 $i
done
############

2.)
#!/bin/sh

case "$1" in
start) /usr/bin/signature -f $HOME/.signature -q $HOME/Info/quote -r\
		-t $HOME/.signature-template

        ;;
stop)   killall signature
        ;;
restart)
        sh $0 stop
        sh $0 start
esac


Dises Skript startet Signature mit den richten Parameter. In der Signaturendatei
$HOME/.signature steht dann immer eine Signatur von einer Vorlage erstellt. Will
man das ganze neustarten, kann man es manuell mit /etc/xinit.d/signature restart
durchführen.

3.)
#!/bin/sh

/usr/bin/X11/xconsole -geometry 640x130-0-40 -iconic -fn fixed\
-file /dev/xconsole 2> /dev/null &

Dieses Skript startet die xconsole. Da ein Neustart oder Stoppen nicht notwendig
ist (Einfach Fenster schließen), kann man den Parameter start einfach ignorieren.

4.) 

Fr Jul 30 13:54:24 CEST 2021
patent_button.gif valid-html401.png elektra.jpg fsfe-logo.png valid-css.png vim.gif anybrowser.gif