URL: https://www.overclockers.at/linux/x-server-per-xrandr-steuern-von-auerhalb-der-laufenden-x-session_252506/page_1 - zur Vollversion wechseln!
Ich habe aktuell das Problem, daß ich eine X Session per xrandr steuern möchte, allerdings automatisiert, d.h. von außerhalb der laufenden X Session.
d.h. ein System fährt hoch, zieht sich dann über's Netzwerk ein Konfigurationsskript, daß eine Maschine in einen gewissen Zustand versetzt (da gehören zig andere Sachen auch dazu).
Jetzt soll auch die Outputkonfiguration über dieses Skript, das von Init gesteuert im Hintergrund läuft verändert werden.
Ich habe dazu Code geschrieben, der nach einer laufenden Window Manager Session sucht (weil dann ist das X sicher schon up), und wenn diese vorhanden ist, versucht das Ding per xrandr einen Klonmodus einzustellen, wie folgt:
Code:xrandr --output DVI-D-1 --same-as VGA-1 xrandr --output HDMI-4 --same-as VGA-1
Code:xrandr -d :0.0 --output DVI-D-1 --same-as VGA-1 xrandr -d :0.0 --output HDMI-4 --same-as VGA-1
also du willst den gleichen output auf beiden bildschirmen?
In dem Fall sind es drei Schirme. Genau genommen eigentlich zwei Schirme und vier Beamer (da wird auch hardwaretechnisch noch geklont, außerhalb vom Rechner).
Aber das ist nicht wichtig. Der Rechner hat einfach 3 Ausgänge: VGA-1, DVI-D-1 und HDMI-4, und ja, das soll alles geklont werden. Innerhalb der X Session, also in einem laufenden LXDE in dem Fall funzt das alles ohne Probleme. Ich kann das per arandr oder per xrandr auf'm grafischen Terminal einstellen, und es haut hin.
Wie gesagt will ich das aber auch von außerhalb der laufenden X Session einstellen können. Also das X und LXDE laufen jetzt (sagen wir Mal), dann startet im Hintergrund automatisch mein Skript und soll diese Rekonfiguration erledigen, damit es der Benutzer des Systems nicht manuell machen muß auf der Maschine. Viele der Nutzer vergessen mit der Zeit nämlich einfach, wie arandr zu bedienen ist, und flippen dann, wenn die Ausgabe nicht paßt...
Ok, es funzt jetzt! Ich habe einen Fehler gemacht, nämlich den zu denken, daß sich die Displays gleich verhalten würden, wenn's aktiv sind und wenn man grade mit <Ctrl>+<Alt>+<F1> o.ä. auf einer lokalen TTY sitzt. Wechselt man das System auf eine TTY, dann können die Displays nicht mehr rekonfiguriert werden! Weder lokal noch remote (SSH Terminal). Auch dann nicht, wenn man das korrekte Display spezifiziert. Man kann nur mehr Werte auslesen, aber nichts ändern (auch nicht die Auflösung o.ä.).
Ist die X Session aber aktiv, sitzt der User also aktiv auf der grafischen Oberfläche, dann funktioniert das Setzen im Hintergrund per Initscript gesteuert sehr wohl. Ich hatte nur in meinem Automatismus das -d :0.0 vergessen gehabt!
In meinem Bash Konfigurationsskript, das die jeweiligen Maschinen (und Räume) zur Bootzeit gemäß der gerade bestehenden Anforderungen herrichtet steht jetzt folgender sicherlich recht schmutziger kleiner Hack:
Code:( IsXpresent=0; while [[ ${IsXpresent} = 0 ]]; do sleep 2 if [[ $(ps ax | grep lxsession | grep -v grep) ]]; then xrandr -d :0.0 --output DVI-D-1 --same-as VGA-1 xrandr -d :0.0 --output HDMI-4 --same-as VGA-1 IsXpresent=1; fi done ) &
overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025