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:
xrandr --output DVI-D-1 --same-as VGA-1
xrandr --output HDMI-4 --same-as VGA-1
Es wird also VGA-1 auf DVI-D-1 und HDMI-4 geklont. Rufe ich diese Befehle von innerhalb der laufenden X Sesson (hier: von einem LXDE Terminal) auf, funktioniert alles, egal ob ich der User bin, der die Session ursprünglich gestartet hat, oder ob ich root oder sonstwer bin. Es geht einfach, solange ich in der Session drinsitze.
Wechsle ich aber per <CTRL>+<Alt>+<F1> auf ein TTY1 raus, kann ich das Display von dort nicht mehr steuern, auch dann nicht, wenn ich das laufende Display korrekt spezifiziere:
xrandr -d :0.0 --output DVI-D-1 --same-as VGA-1
xrandr -d :0.0 --output HDMI-4 --same-as VGA-1
Man bekommt dann "Configure crtc 0 failed" oder "Configure crtc 1 failed". versucht man z.B. per "--size 1024x768" die Auflösung zu ändern, erhält man "Failed to change the screen configuration".
echo $DISPLAY in der laufenden X Session liefert :0.0 zurück, also das Display paßt. Wenn ich ein falsches Display wie etwa :0.1 angebe, kommt ja auch eine andere Fehlermeldung, wie etwa "Can't open Display :0.1"
Wenn ich vor dem Aufruf der xrandr Kommandos auf einer root shell mit der ich das machen will lokal das korrekte Display setze (# export DISPLAY=:0.0) hilft das auch nicht.
Und genau dasselbe Problem habe ich halt beim Versuch, das ganze automatisiert zu lösen.
Faszinierend ist: Prinziell ansprechen geht aber!
"xrandr -d :0.0 -q" zum Beispiel zeigt mir korrekt die Konfig des aktuell laufenden Displays! Ich kann's nur nicht umstellen.
Daher abschließend meine Frage: Wie kann ich ein X Display mit xrandr von außerhalb der laufenden X Session rekonfigurieren?