Aufruf von Systemfunktion, Steuerung ScreenSaver

Hallo allerseits

Ich habe mein System die Tage von Win7 auf BananaPi portiert - soweit fast alles ok. Das derzeit noch fehlende Mediaplayer Modul habe ich nach „Thema: Sprachausgabe auf Soundkarte“ von Kugelberg - DANKE dafür - vorübergehend gelöst.

Die Kernfunktion für mich war der Befehl: system( „mplayer /data/sonos/temperatur.mp3“ );

Jetzt möchte ich gerne den ScreenSaver auf die gleiche Art und Weise steuern.
Mit putty funktioniert: „xscreensaver-command -display $DISPLAY:0 --deactivate“ prima.
Von IPS aus leider nicht.
$display1 = ‚xscreensaver-command -display $DISPLAY:0 --deactivate‘;
system($display1);

Habt Ihr eine Idee?

LG
Andreas

Hi,

erstmal fällt mir auf, dass „$DISPLAY:0“ irgendwie komisch ausieht.
Ich dachte erst es läge daran, dass in der Umgebung in der SYMCON läuft $DISPLAY nicht gesetzt ist. Allerdings scheint dies in der Putty Bash auch nicht zu sein, denn so etwas wie „:0“ ist normalerweise der Inhalt von $DISPLAY.

Weiterhin ist in meinem xscreensaver-command das Kommando nicht „–deactivate“ sondern „-deactivate“.

Dann würde ich aber eine Fehlermeldung erwarten…
Es scheint aber so zu sein, dass bei system ERROUT nicht angezeigt wird.

Hab es gerade gestestet:
Hätte erwartet, dass

system('ech $BLUBBER ');

mir einen Fehler ausgibt, tut es aber nicht.

system('ech $BLUBBER 2>&1');

hingegen schon („2>&1“ bedeutet, dass ERROUT [2], STDOUT [1] angehängt wird).

Versuch doch mal:

system('xscreensaver-command -display $DISPLAY:0 --deactivate 2>&1');

Allerdings würde ich vermuten, dass dies geht:

system( "xscreensaver-command -display :0 -deactivate');

Gruß,
Thorsten

Thorsten

Vielen Danke für Deine Mühe, jetzt sehe ich wenigstens was das System meldet. leider kann ich damit nichts anfangen und Google liefert viele, viele, viele links.

Mein Gefühl sagt mit, dass es eher ein Rechteproblem ist. Mit putty aus der Ferne kann ich das HDMI Display am Gerät in den Screensaver schicken und wieder herausholen. Da bin ich aber als nicht-root unterwegs. IPS läuft ja sicher als root, oder?

Falls Du mir noch etwas weiter helfen kannst, wäre ich Dir dankbar.

No protocol specified
xscreensaver-command: can’t open display :0

Hi,

Das ist ein Security Feature.
Mit X kann man z.B. auf einem Rechner ein Programm starten und es per Netzwerk auf einem anderen Rechner anzeigen lassen.
Also auf Rechner A:

export DISPLAY=rechnerb:0
xterm

Dann wird auf Display 0 an Rechner B (Hostname „rechnerb“) das Programm xterm angezeigt, dass eigentlich auf Rechner A läuft, dort also CPU und Memory und so verbraucht…
Damit das aber nicht jeder einfach machen kann muss man dies auf Rechner B erst erlauben. Z.B mit „xhost +rechnera“
Damit wird Rechner A (Hostname „rechnera“) erlaubt auf dem X von Rechner B etwas anzuzeigen.
Mit „xhost +“ erlaubt man es allen.

Wenn man jetzt also diese Erlaubnis erteil, könnte es gut sein, dass es funktioniert.
Alternativ könnte man in dem System auch ein Passwortloses ssh auf den anderen Benutzer einrichten und per System dann so etwas wie

ssh pi@localhost "xscreensaver-command -display :0 -disable"

ausführen…
Nicht schön, sollte aber gehen.

Sag bescheid, dann können wir das hinbiegen.

Gruß,
Thorsten

Moin,

Unfug!
SYMCON läuft ja als root… Daran muss ich mich erst noch gewöhnen.

Versuch mal:

system('su - pi -c "xscreensaver-command -display :0 -deactivate"');

Vorausgesetzt Dein Benutzer ist „pi“.
Damit wechselst Du in den Benutzer und führst dann das command aus, dass mit -c angegeben wird. Geht ohne Passwort aber nur wenn root das macht.

Gruß,
Thorsten

Lieber Thorsten
wird heute abend sofort ausprobiert. Danke für Deine Mühe!!!
LG
Andreas

Hallo Thorsten - ich schulde Dir ein Bier :smiley:

das ist DIE Lösung:

system('su - pi -c "xscreensaver-command -display :0 -deactivate"'); 

Also DANKE noch einmal!

LG
Andreas