c0mm0ner schriebWobei man dazu erst einmal wissen muss, mit welchem Wert die Variable "Name" in der Desktop-Datei belegt ist. Diese wird dann mit F1 in slim als Session angezeigt und an das aufrufende Skript übergeben.
Wenn man die Desktop-Files nicht angefasst hat, sollte dort aber "gnome-session" statt "gnome" und "xfce4-session" statt "xfce4" übergeben werden.
Ich habe in /usr/share/xsessions nichts verändert.
Dort steht:
/usr/share/xsessions/gnome-classic.desktop ===> Name=GNOME Classic ===> DesktopNames=GNOME-Classic;GNOME ==> Exec=env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic
/usr/share/xsessions/gnome.desktop ===> Name=GNOME ===> DesktopNames=GNOME ==> Exec=gnome-session
/usr/share/xsessions/xfce.desktop ===> Name=Xfce Session ===> DesktopNames=XFCE ==> Exec=startxfce4
Was wird nun hier übergeben, wenn mit F1 die *.desktop Dateien ausgewertet werden von 'slim'?
Mit der Eintragung in /etc/slim.conf
...
login_cmd exec /bin/bash -login ~/.xinitrc %session
sessions "Xfce Session", GNOME, "GNOME Classic"
...
und
~/.xinitrc
#!/bin/bash
#
# ~/.xinitrc
#
DEFAULTSESSION=startxfce4
case "$1" in
"Xfce Session") exec startxfce4 ;;
GNOME) exec gnome-session ;;
"GNOME Classic") exec "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic" ;;
*) exec $DEFAULTSESSION ;;
esac
lande ich wieder auf der Xfce-Oberfläche, was auch immer ich mit F1 auswähle.
Wenn ich oben DEFAULTSESSION=gnome-session eintrage lande ich immer auf der GNOME-Oberfläche.
Also wird bei F1 etwas "Unbekanntes" in %session gestellt.
Wie kann man den Wert von %session feststellen?
Die Datei /var/log/slim.log zeigt:
slim: waiting for X server to shut down
slim: waiting for X server to begin accepting connections.
Was sagt uns das?
Jetzt habe ich die ~/.xintrc minimalisiert auf
#!/bin/bash
#
# ~/.xinitrc
#
exec $1
Damit kann ich über F1 die Oberflächen GNOME und Xfce Session auswählen.
Bei GNOME Classic fällt er immer wieder auf den Login-Schirm zurück.
Wenn ich von der GNOME-Oberfläche 'Abmelden' das zweite Mal mache, dann fällt er auf tty1 Login: zurück und mit 'startx' lande ich dann auf der Xfce-Oberfläche.
Es funktioniert auch mit folgender ~/.xinitrc
#!/bin/bash
case $1 in
gnome-session)
exec gnome-session
;;
gnome-session)
exec env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic
;;
startxfce4|*)
exec startxfce4
;;
esac
Für GNOME Classic scheint er keinen Wert zu übergeben, denn hier startet dann die Xfce Session. Nur wenn man den ersten Eintrag wegläßt, dann startet GNOME Classic mit "exec env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic" anstelle von "exec gnome-session".
Also die Frage: Geht das 'slim' prinzipiell überhaupt, oder ist das total buggy?
In dem Wiki
https://wiki.archlinux.org/index.php/SLiM , was sich als ganz großer Mist herausstellt, steht bezeichnenderweise:
The factual accuracy of this article or section is disputed.
was auf deutsch heißt:
Die sachliche Richtigkeit dieser Artikel oder Abschnitte ist umstritten.
Da habt Ihr mich ja auf einen schönen Holzweg geführt.
Wie kann ich auf einen anderen DM, z.B. lightdm oder xdm umsteigen?
Gruß
Ch. Hanisch