Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

X-Server auf aktuellem Display neu starten

27 views
Skip to first unread message

Markus Raab

unread,
Mar 11, 2013, 2:59:22 PM3/11/13
to
Hallo!

Wie kann man in einem Skript den aktuellen X-Server neustarten?
Ich möchte eigentlich genau das Verhalten was kdm mit Alt+E hat.

/etc/init.d/kdm restart
geht nicht, weil da ja alle X-Server Instanzen neu gestartet werden
und nicht nur die aktuelle.

Als hack könnte man vielleicht die pid die man mit
ps axo pid,args | grep X | grep $DISPLAY | awk '{print $1}'
bekommt killen.



Um vielleicht noch ein wenig auszuholen:
Was ich eigentlich erreiche möchte ist innerhalb von (k)dm noch auf eine
andere xorg.conf umzustellen. Die Idee wäre jetzt einfach die xorg.conf
anders zu symlinken und dann X neu zu starten, und das ganze innerhalb eines
/usr/share/xsessions providers.
Also man würde dann statt "kde" "monitor XX" auswählen können und nach dem
login würde der X-server mit der neuen Auflösung restarten.

Mit xrandr geht es leider nicht weil die zwei Monitore die ich abwechselnd
dran habe keinen überlappenden HorizSync Bereich haben.

mfg Markus

Dirk Thierbach

unread,
Mar 11, 2013, 4:13:11 PM3/11/13
to
Markus Raab <use...@markus-raab.org> wrote:
> Wie kann man in einem Skript den aktuellen X-Server neustarten?

> Was ich eigentlich erreiche möchte ist innerhalb von (k)dm noch auf eine
> andere xorg.conf umzustellen. Die Idee wäre jetzt einfach die xorg.conf
> anders zu symlinken und dann X neu zu starten, und das ganze innerhalb eines
> /usr/share/xsessions providers.

Hilft das hier?

https://wiki.archlinux.org/index.php/KDM#Restart_X_server_menu_option

> Also man würde dann statt "kde" "monitor XX" auswählen können und nach dem
> login würde der X-server mit der neuen Auflösung restarten.

> Mit xrandr geht es leider nicht weil die zwei Monitore die ich abwechselnd
> dran habe keinen überlappenden HorizSync Bereich haben.

Alternativ: HorizSync von Hand eintragen und weit genug fuer beide
Monitore machen, fuer beide Monitore je eine funktionierende Modeline
eintragen, dann mit Ctrl-Keypad + bzw. - wechseln. Bei nicht gerade
uralten Monitoren sollte kurzzeitiges Ueberschreiten des gueltigen
HSync-Bereiches kein Problem sein.

Dann kann man auch im laufenden Betrieb umstoepseln.

- Dirk

Juergen Ilse

unread,
Mar 12, 2013, 5:34:34 AM3/12/13
to
Hallo,

Markus Raab <use...@markus-raab.org> wrote:
> Wie kann man in einem Skript den aktuellen X-Server neustarten?
> Ich mᅵchte eigentlich genau das Verhalten was kdm mit Alt+E hat.
>
> /etc/init.d/kdm restart
> geht nicht, weil da ja alle X-Server Instanzen neu gestartet werden
> und nicht nur die aktuelle.
>
> Als hack kᅵnnte man vielleicht die pid die man mit
> ps axo pid,args | grep X | grep $DISPLAY | awk '{print $1}'
> bekommt killen.

Kill einfach den Prozess, der deine X-Session am laufen haelt.
Nach dem restart des X-Servers ist deine X-Session ohnehin weg
(die stirbt mit dem killen des X-Servers), und wenn du deine
X-Session beendest (egal, ob du darin nun KDE, gnome oder etwas
voellig anderes laufen hast).

> Um vielleicht noch ein wenig auszuholen:
> Was ich eigentlich erreiche mᅵchte ist innerhalb von (k)dm noch auf eine
> andere xorg.conf umzustellen. Die Idee wᅵre jetzt einfach die xorg.conf
> anders zu symlinken und dann X neu zu starten, und das ganze innerhalb eines
> /usr/share/xsessions providers.

Wie gesagt: mein Tipp waere, die X-Session rauszuschiessen (denn dann
startet der Display-Manager den X-Server neu).

Aber wenn du "nur" das Problem hast, dass die Monitore keinen gemeinsamen
Sync-Bereich haben: machen denn beide Monitore EDID? Wenn ja, dann richte
doch einfach nur eine xorg.conf ein und pack (wie in guten alten Zeiten)
"mode lines" mit rein. Die fuer den jeweils angeschlossenen Monitor nicht
passenden "mode lines" muessten dann vom X-Server automatisch als unpassend
erkannt und ignoriert werden, er startet dann mit einer der anderen konfi-
gurierten "mode lines" (auch voellig unabhaengig davon, eine xorg.conf
umkopieren zu muessen) ...

Tschuess,
Juergen Ilse (jue...@usenet-verwaltung.de)
--
Ein Domainname ist nur ein Name, nicht mehr und nicht weniger.
Wer mehr hineininterpretiert, hat das Domain-Name-System nicht
verstanden.

Markus Raab

unread,
Mar 12, 2013, 3:04:33 PM3/12/13
to
Hallo!

Dirk Thierbach wrote:
>> Was ich eigentlich erreiche möchte ist innerhalb von (k)dm noch auf eine
>> andere xorg.conf umzustellen. Die Idee wäre jetzt einfach die xorg.conf
>> anders zu symlinken und dann X neu zu starten, und das ganze innerhalb
>> eines /usr/share/xsessions providers.
>
> Hilft das hier?
>
> https://wiki.archlinux.org/index.php/KDM#Restart_X_server_menu_option

Dieses Feature ist aktiviert und genau das würde ich gerne in meinem eigenen
Skript einbauen. Was macht dieses Feature intern? Schließt sich da kdm
einfach selbst und löst dadurch ein X-Server restart aus?

>> Also man würde dann statt "kde" "monitor XX" auswählen können und nach
>> dem login würde der X-server mit der neuen Auflösung restarten.
>
>> Mit xrandr geht es leider nicht weil die zwei Monitore die ich
>> abwechselnd dran habe keinen überlappenden HorizSync Bereich haben.
>
> Alternativ: HorizSync von Hand eintragen und weit genug fuer beide
> Monitore machen, fuer beide Monitore je eine funktionierende Modeline
> eintragen, dann mit Ctrl-Keypad + bzw. - wechseln.

Genau das habe ich probiert und es hat nicht funktioniert?

Ich hab mal eingetragen:
HorizSync : 30.000-81.000 kHz

mit den modelines:
ModeLine "1280x720" 74.25 1280 1390 1430 1650 720 725 730 750 +hsync
+vsync

und
ModeLine "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235
+hsync -vsync

allerdings schlägt für das die Mode Validation fehl.

Und wenn ich
Option "ModeValidation" "NoEdidModes"
aktiviere, dann wird ein native panel mit sehr geringer Auflösung als
Fallback genommen und es geht weder 1280x720 noch 1920x1200.

Treiber ist übrigens nvidia mit twinview.

> Bei nicht gerade
> uralten Monitoren sollte kurzzeitiges Ueberschreiten des gueltigen
> HSync-Bereiches kein Problem sein.

Ja, die Hardware wird nicht kaputt. Es gibt nur Farbfehler - in schwarzen
Bereichen rauscht es dann bunt.


> Dann kann man auch im laufenden Betrieb umstoepseln.

Das wäre natürlich das beste :-)

glg Markus

Markus Raab

unread,
Mar 12, 2013, 3:09:44 PM3/12/13
to
Hallo!

Juergen Ilse wrote:

>> Als hack könnte man vielleicht die pid die man mit
>> ps axo pid,args | grep X | grep $DISPLAY | awk '{print $1}'
>> bekommt killen.
>
> Kill einfach den Prozess, der deine X-Session am laufen haelt.
> Nach dem restart des X-Servers ist deine X-Session ohnehin weg
> (die stirbt mit dem killen des X-Servers), und wenn du deine
> X-Session beendest (egal, ob du darin nun KDE, gnome oder etwas
> voellig anderes laufen hast).

Sicher das das den X-Server neustartet? Meiner Erfahrung nach kehrt man
dadurch einfach zu kdm zurück. Also zumindest nach "Abmelden" bleibt noch
die falsche Auflösung und erst durch Alt+E bei kdm wird der X-Server mit der
richtigen Auflösung neu gestartet.

>> Um vielleicht noch ein wenig auszuholen:
>> Was ich eigentlich erreiche möchte ist innerhalb von (k)dm noch auf eine
>> andere xorg.conf umzustellen. Die Idee wäre jetzt einfach die xorg.conf
>> anders zu symlinken und dann X neu zu starten, und das ganze innerhalb
>> eines /usr/share/xsessions providers.
>
> Wie gesagt: mein Tipp waere, die X-Session rauszuschiessen (denn dann
> startet der Display-Manager den X-Server neu).
>
> Aber wenn du "nur" das Problem hast, dass die Monitore keinen gemeinsamen
> Sync-Bereich haben: machen denn beide Monitore EDID? Wenn ja, dann richte
> doch einfach nur eine xorg.conf ein und pack (wie in guten alten Zeiten)
> "mode lines" mit rein. Die fuer den jeweils angeschlossenen Monitor nicht
> passenden "mode lines" muessten dann vom X-Server automatisch als
> unpassend erkannt und ignoriert werden, er startet dann mit einer der
> anderen konfi- gurierten "mode lines" (auch voellig unabhaengig davon,
> eine xorg.conf umkopieren zu muessen) ...

Nein, leider meldet sich nur ein Bildschirm mit EDID. Ich hab aber edid
files für beide Geräte, wüsste aber nicht wie ich die mergen könnte?

In meinen Configs gibts je einen Eintrag wie:
Option "CustomEDID" "DFP-0:/etc/X11/monitor.edid;
DFP-1:/etc/X11/monitor.edid"
dadurch wird dann die gewünschte Auflösung genommen - egal was grad
tatsächlich dran hängt.

Treiber ist nvidia mit twinview.

glg Markus

Dirk Thierbach

unread,
Mar 12, 2013, 6:27:02 PM3/12/13
to
Markus Raab <use...@markus-raab.org> wrote:
>> https://wiki.archlinux.org/index.php/KDM#Restart_X_server_menu_option

> Dieses Feature ist aktiviert und genau das würde ich gerne in meinem
> eigenen Skript einbauen. Was macht dieses Feature intern?

Ich kann da nur raten, ich verwende kdm nicht.

> Schließt sich da kdm einfach selbst und löst dadurch ein X-Server
> restart aus?

Die uebliche Vorgehensweise bei einem Display Manager ist es,
dass der DM den X-Server startet, und dann einen Benutzerprozess
(normalerweise den Window Manager) mit Berechtigung, auf den Server
zuzugreifen.

Wenn Du also die Session beendest, beendet das den WM, was der DM
als Signal nimmt, den Einlogscreen anzuzeigen. Schiesst man den WM ab,
passiert dasselbe. Schiesst man den X-Server ab, sollte der DM ihn
neu starten, aber die Zuordnung des Servers zur Session kennt
eigentlich nur der DM.

Moeglicherweise kann man die Zuordnung aus der Kommandozeile des
X-Servers herausholen (:0 :1 usw, Displaynummer vergleichen).
Bei xdm geht das zumindest.

> Genau das habe ich probiert und es hat nicht funktioniert?

Was steht in Xorg.log?

> Ich hab mal eingetragen:
> HorizSync : 30.000-81.000 kHz
>
> mit den modelines:
> ModeLine "1280x720" 74.25 1280 1390 1430 1650 720 725 730 750 +hsync
> +vsync
>
> und
> ModeLine "1920x1200" 154.00 1920 1968 2000 2080 1200 1203 1209 1235
> +hsync -vsync

Sind das die funktionierenden Modelines fuer die jeweiligen Monitore?
Ggf. muss man auch VertRefresh passend eintragen.

> allerdings schlägt für das die Mode Validation fehl.

> Und wenn ich Option "ModeValidation" "NoEdidModes" aktiviere,

Das beeinflusst auch nur die Quelle fuer die Modelines.

Die Optionen "UseEdidFreqs" und "UseEdid" sehen vielversprechender
aus.

Erste Anlaufstelle ist das Log, da sollte man sehen, was schiefgeht.

- Dirk

Juergen Ilse

unread,
Mar 13, 2013, 6:41:40 AM3/13/13
to
Hallo,

Markus Raab <use...@markus-raab.org> wrote:
> Juergen Ilse wrote:
>>> Als hack kᅵnnte man vielleicht die pid die man mit
>>> ps axo pid,args | grep X | grep $DISPLAY | awk '{print $1}'
>>> bekommt killen.
>> Kill einfach den Prozess, der deine X-Session am laufen haelt.
>> Nach dem restart des X-Servers ist deine X-Session ohnehin weg
>> (die stirbt mit dem killen des X-Servers), und wenn du deine
>> X-Session beendest (egal, ob du darin nun KDE, gnome oder etwas
>> voellig anderes laufen hast).
> Sicher das das den X-Server neustartet?

Normalerweise schon, und zwar u.a. deshalb, um ggfs. in die xrdb hinein-
geschriebene Daten (z.B. bzgl. Preferences bestimmter Anwendungen) wieder
zurueckzusetzen, damit der naechste User nicht diese Einstellungen (womoeg-
lich sogar unwissentlich) uebernimmt. In der man-page von z.B. xterm findet
man jede Menge Einstellungen, die ueber X-Resources (und damit auch ueber
den Inhalt der xrdb) steuerbar sind (Schriftarten, Farben, ob ein Scrollbar
da sein soll, wenn ja, auf welcher Seite des Fensters es liegt, ...).

> Meiner Erfahrung nach kehrt man dadurch einfach zu kdm zurᅵck.

Es ist auf Mehrbenutzersystemen genaugenommen sogar eine Sicherheitsluecke,
wenn am ende der Xsession der X-Server nicht resettet (sprich bei einem
lokal laufenden X-Server neu gestartet) wird ...

Dirk Thierbach

unread,
Mar 13, 2013, 7:50:21 AM3/13/13
to
Juergen Ilse <jue...@usenet-verwaltung.de> wrote:
> Markus Raab <use...@markus-raab.org> wrote:
>> Juergen Ilse wrote:
>>> Kill einfach den Prozess, der deine X-Session am laufen haelt.

Das ist bei mir der WM.

>> Sicher das das den X-Server neustartet?
> Normalerweise schon, und zwar u.a. deshalb,

Bei mir unter xdm tut er das uebrigens nicht (was nicht heisst, dass
er es bei anderen DMs nicht doch tut).

> um ggfs. in die xrdb hinein- geschriebene Daten
> (z.B. bzgl. Preferences bestimmter Anwendungen) wieder
> zurueckzusetzen, damit der naechste User nicht diese Einstellungen
> (womoeg- lich sogar unwissentlich) uebernimmt.

Dazu muss man den Server nicht neustarten.

> Es ist auf Mehrbenutzersystemen genaugenommen sogar eine Sicherheitsluecke,

Warum? Bleibt der Keks gleich? Der steht doch eigentlich in einer
Datei, damit kann er auch bei laufendem Server geaendert werden.
(Ich habe es jetzt nicht ausprobiert.)

- Dirk

Thomas 'PointedEars' Lahn

unread,
Apr 21, 2013, 6:21:13 AM4/21/13
to use...@markus-raab.org
Markus Raab wrote:

> Juergen Ilse wrote:
>>> Als hack könnte man vielleicht die pid die man mit
>>> ps axo pid,args | grep X | grep $DISPLAY | awk '{print $1}'
>>> bekommt killen.
>>
>> Kill einfach den Prozess, der deine X-Session am laufen haelt.
>> Nach dem restart des X-Servers ist deine X-Session ohnehin weg
>> (die stirbt mit dem killen des X-Servers), und wenn du deine
>> X-Session beendest (egal, ob du darin nun KDE, gnome oder etwas
>> voellig anderes laufen hast).
>
> Sicher das das den X-Server neustartet?

Ja.

> Meiner Erfahrung nach kehrt man dadurch einfach zu kdm zurück.

Vorher startet kdm=4:4.8.4-6 hier xserver-xorg=1:7.7+2 neu. Es könnte aber
sein, dass ich dafür etwas eingestellt habe (anscheinend nicht in der
kdmrc), an das ich mich nicht mehr erinnere.

> Also zumindest nach "Abmelden" bleibt noch die falsche Auflösung und erst
> durch Alt+E bei kdm wird der X-Server mit der richtigen Auflösung neu
> gestartet.

Alt+E kannte ich noch nicht, danke. Bisher ging ich immer über das kdm-Menü
oder verwendete ein beherztes Ctrl+Alt+Backspace (zwingt X-Server, neu zu
starten).

--
PointedEars

Twitter: @PointedEars2
Please do not Cc: me. / Bitte keine Kopien per E-Mail.
0 new messages