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.)