Andreas Kohlbach <
a...@spamfence.net>:
> On Mon, 20 Mar 2023 00:23:21 +0100, Helmut Waitzmann wrote:
>>
>> Andreas Kohlbach <
a...@spamfence.net>:
>>>
>>> Braucht xdm die /etc/X11/xdm/Xsession überhaupt? Schiebe die doch
>>> mal woanders hin (Backup). Vielleicht startet X dann noch, und das
>>> Problem ist weg?
>
> [...]
>
>> Also manchmal zweifel' ich an deinem Verstand: Ob der XDM eine
>> Konfigurationsdatei «/etc/X11/xdm/Xsession» benutzt, steht
>> sicherlich in der XDM‐Dokumentation. Das muss man nicht
>> ausprobieren.
>
> Ich halte Trial and Error
> <
https://de.wikipedia.org/wiki/Versuch_und_Irrtum> für besser. Es wird
> sofort Ergebnisse liefern (geht oder geht nicht),
Da habe ich so meine Zweifel. Beispielsweise habe ich in meinem
HOME‐Verzeichnis eine Datei «.xsession», die auch vom XDM
(mittels «/etc/X11/Xsession») verwendet wird.
Allerdings nutze ich den XDM nicht, sondern logge mich an einer
virtuellen Konsole textorientiert ein und starte meine X‐Sitzung
mittels «startx» von Hand. Dafür habe ich im HOME‐Verzeichnis
die Datei «.xinitrc», ein Shell‐Skript, stehen, in der im
wesentlichen nur das Kommando
exec /etc/X11/Xsession "${HOME%/}"/.xsession
steht.
Ich könnte auf «/etc/X11/Xsession» verzichten und statt dessen
das Kommando
exec "${HOME%/}"/.xsession
verwenden. Das würde mir ebenfalls eine X‐Sitzung starten – eine
X‐Sitzung, der Verschiedenes, das man nicht auf den ersten Blick
erkennen wird («geht oder geht nicht»), fehlt.
Ein einfaches Vorgehen nach Versuch und Irrtum wird da nicht zum
Ziel führen.
> sodass man sich nicht erst in die doch recht komplexe Mechanik
> von X (XDM, KDM, LightDM...) einlesen muss, und vielleicht doch
> die Lösung findet.
>
> Ich weiß, dass Du das anders sieht (RTFM). Ich auch, *wenn* man zum
> Verstehen kein Raketenwissenschaftler werden muss.
Man muss auch kein Raketenwissenschaftler sein. Es genügt, die
Programmiersprache «POSIX‐Shell» so weit zu verstehen, dass man
eine Ahnung davon bekommt, dass «/etc/X11/Xsession» die frisch
gestartete X‐Sitzung unter Beachtung verschiedener
Konfigurationsdateien des HOME‐Verzeichnisses (oder bestimmter
Defaults bei Abwesenheit derselben) konfiguriert und schließlich
den vom Anwender gewählten Desktop startet.
>> Darüber hinaus könntest du einfach mal auf deinem System
>> nachsehen, was in der Datei «/etc/X11/Xsession» steht, und dir
>> überlegen, was geschieht, wenn du sie weglässt. Du kannst davon
>> ausgehen, dass diese Datei auf Marcos System eine ähnliche
>> Funktion haben wird. Nachdem alles, was die Datei
>> «/etc/X11/xdm/Xsession» auf Marcos System tut, ist, die Datei
>> «/etc/X11/Xsession» einzulesen und abzuarbeiten, kannst du
>> davon ausgehen, dass das Entfernen der Datei
>> «/etc/X11/xdm/Xsession» ähnlich sinnvoll wie das Entfernen der
>> Datei «/etc/X11/Xsession» ist.
>
> Ende 2021 hatte ich hier die Frage wegen setxkbmap (Xorg/Keyboard
> Konfiguration) gestellt.
Ja, ich erinnere mich. «setxkbmap» zerschoss dir die Datei
«.xsession» im HOME‐Verzeichnis. Dadurch verwendete
«/etc/X11/Xsession» nicht mehr einen Default sondern die
zerschossene Datei. Und das war die Folge:
> Durch das Anwenden startete X beim nächsten Mal nicht mehr. Am
> Ende lief es darauf hinaus, dass es ein Bug war (der
> mittlerweile gefixt ist). Abhilfe schaffte das Entfernen der
> erzeugten Datei.
Ja, und zwar deshalb, weil du keine Datei «"$HOME"/.xsession»
haben wolltest (und durftest), damit der von dir gewählte Desktop
startet. «"$HOME"/.xsession» war in deinem Fall nicht nur nicht
obligatorisch sondern sogar störend.
Etwas anders verhält es sich doch mit einer vom
Systemadministrator (oder Distributor) erstellten Datei. Da kann
man einerseits nicht davon ausgehen, dass sie optional ist, und
sollte andererseits davon ausgehen können, dass sie vom
Administrator oder Distributor mit Sorgfalt erstellt und geprüft
worden ist. Im Fall von Debian Sid scheint die Datei
«/etc/X11/xdm/Xsession» nach der letzten Prüfung nochmal
verändert worden zu sein. (Möglicherweise fiel irgend etwas
Schweres auf die Return‐Taste, als die Datei im Editor stand.)
Optional wird sie aber dennoch eher nicht sein.
> Damit gelangte ich zur Meinung, mögliche Schuldige erst mal aus
> dem Weg zu räumen. Wenn es dann noch klappt, und man mit keinen
> oder nicht zu vielen Einschränkungen leben muss: prima.
Bei meinem Fall wird das Unterlassen der Abarbeitung von
«/etc/X11/Xsession» zu Einschränkungen führen, die man auf den
ersten Blick nicht erkennt. Beispielsweise könnte es dann sein,
dass «gpg» (mit dem «gpg-agent») nicht mehr richtig
funktioniert. Das wird man aber beim schnellen Versuch und
Irrtum nicht entdecken und erst später, wenn man es dann entdeckt
haben wird, nicht mehr damit in Verbindung bringen.
> Wie erwähnt habe ich keine /etc/X11/lightdm/Xsession (ich nutze
> lightdm statt xdm). Auch dass die Xsession (die habe ich
> woanders) dann nicht grundsätzlich mit einem Display Manager zu
> tun hat gab mir die Idee, diese Datei doch zu entfernen.
Sie kommt erst dann ins Spiel, wenn der Display‐Manager seine
Arbeit getan und eine neue X‐Sitzung gestartet hat.
Der Distributor oder Administrator kann nicht unbedingt davon
ausgehen, dass jeder Anwender in seinem HOME‐Verzeichnis alle
möglichen Konfigurationsdateien bereits hat. Deshalb wird in den
Programmen in der Regel dieser Fall berücksichtigt. Bei Dateien
unter «/etc/» sieht das etwas anders aus.
«/etc/X11/Xsession», in Marcos Fall von «/etc/X11/xdm/Xsession»
aufgerufen, initialisiert die X‐Sitzung und startet den vom
Anwender gewählten Desktop.
Ohne «/etc/X11/xdm/Xsession» wird der XDM sie nicht aufrufen. In
Folge wird vermutlich weder die X‐Sitzung initialisiert noch der
vom Anwender gewählte Desktop gestartet, und die X‐Sitzung wird,
kaum gestartet, gleich zu Ende kommen.
> Weder Marco (vermutlich) noch ich haben das Wissen/Zeit, um sich
> ausführlich mit dem Thema zu beschäftigen. Hast Du?
Ich habe mir mal die Zeit genommen, in den Handbüchern
nachzulesen, was «xinit» (und das Frontend «startx» dazu) tun.
Weil mir das Standardverhalten von «startx» nicht in allen
Punkten gefallen hat, habe ich eine Datei «"$HOME"/.xinitrc»
angelegt, um ein abgeändertes Verhalten hinzubekommen.
> Xsession hat eine man page.
>
«Xsession(5)». Daraus:
NAME
Xsession - initialize X session
Das lässt mich vermuten, dass eine X‐Sitzung ohne Xsession eher
nicht richtig initialisiert sein wird.
SYNOPSIS
Xsession [ session-type ]
DESCRIPTION
/etc/X11/Xsession is a Bourne shell (sh(1)) script
which is run when an X Window System session is begun
by startx(1) or a display manager such as xdm(1).
(Some display managers only invoke Xsession when
specifically directed to so by the user; see the
documentation for your display manager to find out
more.) Administrators unfamiliar with the Bourne
shell will likely find the Xsession.options(5)
configuration file easier to deal with than Xsession
itself.
Das ist ein Indiz dafür, dass «/etc/X11/Xsession» nicht nur eine
optionale Konfigurationsdatei sondern eher ein Programm ist, das
seinerseits eine Konfigurationsdatei, «Xsession.options», nutzt.
Xsession is not intended to be invoked directly by
the user; to be effective it needs to run in a
special environment associated with X server
initialization. startx, xdm, xinit(1), and other
similar programs handle this.
By default on a Debian system, Xsession is used by
both common methods of starting the X Window System,
xdm (or another X display manager) and startx.
«/etc/X11/Xsession» scheint also eine Aufgabe zu erfüllen, auf
die die meisten X‐Sitzungen zurückgreifen.
> Vielleicht kannst Du dann eine mögliche Lösung daraus
> extrahieren?
Man könnte versuchsweise mal an einer virtuellen Konsole
textorientiert einloggen und dann mit «startx» eine X‐Sitzung
starten. Wenn die nicht auch den Exit‐Status 256 meldet, ist der
Verdacht groß, dass das Problem nicht «/etc/X11/Xsession» ist.
Dann kann man sich «/etc/X11/xdm/Xsession» ansehen, über die
Leerzeilen am Anfang stolpern und dort (wie beschrieben) einen
Fehler in der Datei vermuten.
> @Marco: Wenn es gar keine Lösung hier geben wird, ersetze doch
> XDM durch lightdm.
Debian Sid ist work in progress. Deshalb sehe ich eher die zwei
folgenden Möglichkeiten, wenn etwas nicht funktioniert:
Entweder, man kniet sich rein, findet den Fehler (Danke,
Christian und Peter!) und kümmert sich darum, dass er behoben
wird, oder, man lässt die Finger von «Sid».