Forum: PC-Programmierung Raspi mit Minimalinstallation: Bild auf HDMI anzeigen?


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von plopp (Gast)


Lesenswert?

Hi, ich habe eine einfache Frage:

Ich bastele mit einem alten Raspi ohne GUI gerade (per ssh). Gibt es 
eine einfache Möglichkeit, per script ein Bild auf dem HDMI-Ausgang 
anzuzeigen? (Also ohne die ganze GUI nachzuinstallieren)

Alle Beispiele, die ich ergoogelt habe, waren immer mit GUI..?

von ich (Gast)


Lesenswert?


von Georg A. (georga)


Lesenswert?

plopp schrieb:
> Alle Beispiele, die ich ergoogelt habe, waren immer mit GUI..?

Da muss man etwas aufpassen, weil dank Windows die Definition GUI leider 
total ruiniert ist und "alles" umfasst ;)

Bei X Window reicht es, wenn man nur den X-Server startet und dann zB. 
dessen Hintergrundbild setzt. Einen Window-Manager und insb. einen 
Login-Screen (lightdm, sddm, kdm, ...) braucht es nicht und man muss das 
auch deaktivieren.

Aber dann gehts dann einfach: In /etc/X11/Xwrapper.config folgende 
Zeilen rein:
1
allowed_users=anybody
2
needs_root_rights=yes
Damit muss man als non-root-User /usr/bin/startx des X-Server starten 
können.

Dann noch schnell einen systemd-Service (zB. 
/etc/systemd/system/kiosk.service ):
1
[Unit]
2
Description=Kiosk Launcher
3
After=systemd-user-sessions.service
4
5
[Service]
6
User=user
7
ExecStart=/usr/bin/startx
8
Restart=always
9
10
[Install]
11
WantedBy=multi-user.target

Aktivieren mit "systemctl daemon-reload; systemctl enable kiosk"

Im Home-Verzeichnis von user dann ein ausführbares Shellskript 
~/.xsession:
1
xrandr -s 1920x1080    # Auflösung erzwingen
2
xset s off             # Screensaver aus
3
xsetroot -bitmap xyz.xbm   # xbm zB. mit gimp erzeugt
4
while true; do
5
  sleep 60       # Oder irgendwas anderes, was das Skript NICHT beendet
6
done

Zack, fertig ist der Minimal-Kioskmodus. Man kann natürlich auch alles 
andere grafische Zeug starten, aber ohne Windowmanager wird es 
schwierig, normale Programme auch vernünftig zu bedienen.

BTW: Wir betreiben so Anzeigebildschirme in Foyers etc. Allerdings läuft 
da ein Caspar-CG drauf, der verschiedene Anzeigelayer (Bilder, 
Webseiten, Videos) zusammenbringt, damit sich etwas rührt...

: Bearbeitet durch User
von plopp (Gast)


Lesenswert?

Vielen Dank, sehr beeindruckend, das werde ich ausprobieren!

Georg A. schrieb:
> needs_root_rights=yes
> Damit muss man als non-root-User /usr/bin/startx des X-Server starten
> können.

sollte es dann nicht "no" statt yes heißen?

Georg A. schrieb:
> xsetroot -bitmap xyz.xbm   # xbm zB. mit gimp erzeugt

schade dass er kein jpg beherrscht..

von Chris (Gast)


Lesenswert?

Kiosk? So? Ohne Worte.

Das Zauberwort heißt fbi.

MfG

von Georg A. (georga)


Lesenswert?

plopp schrieb:
> sollte es dann nicht "no" statt yes heißen?

Laut Man-page:
"Configure if the wrapper should drop its elevated (root) rights before 
starting the X server. Use yes to force execution as root, no to force 
execution with all suid rights dropped, and auto to let the wrapper 
auto-detect. The default is auto."

Hängt etwas an den Grafiktreibermodulen, .xsession wird dann schon mit 
normalen User-Rechten gestartet.

> schade dass er kein jpg beherrscht..

Imagemagic (=display) kann da sicher was auch mit 
Background/Root-Window, dann geht alles an Bild-Formaten. Hab ich jetzt 
nicht ausprobiert, bei uns läuft halt Caspar-CG, das macht dann alles 
inkl. Überblendeffekten, etc.

Du kannst natürlich in der while-Schleife auch die Bilder durchwechseln 
oder mit xclock eine Uhr anzeigen ;) Prinzipiell gehen natürlich alle 
X-Programme, aber ohne Windowmanager muss man deren Position per 
Kommandozeile (-geometry oder so) erzwingen.

Chris schrieb:
> Das Zauberwort heißt fbi.

Spätestens wenn man etwas mehr will, wirds mit reinem Framebuffer sehr 
mühsam.

von Chris (Gast)


Lesenswert?

Georg A. schrieb:
> Chris schrieb:
>> Das Zauberwort heißt fbi.
>
> Spätestens wenn man etwas mehr will, wirds mit reinem Framebuffer sehr
> mühsam.

Die Frage war:

plopp schrieb:
> Hi, ich habe eine einfache Frage:
>
> Ich bastele mit einem alten Raspi ohne GUI gerade (per ssh). Gibt es
> eine einfache Möglichkeit, per script ein Bild auf dem HDMI-Ausgang
> anzuzeigen? (Also ohne die ganze GUI nachzuinstallieren)
>
> Alle Beispiele, die ich ergoogelt habe, waren immer mit GUI..?

MfG

von Georg A. (georga)


Lesenswert?

Chris schrieb:
> Die Frage war:

Der Appetit kommt mit dem Essen ;)

von Oliver R. (superberti)


Lesenswert?

Hi,

Stichworte sind libSDL2 und libjpeg. Mehr braucht es nicht.

Gruß
Oliver

von Abyssaler Einspeiser (Gast)


Lesenswert?

Frueher gab es noch Testprogramme fuers HDMI.
Vielleicht mal in einer alten Version danach stoebern.

> aber ohne Windowmanager

Ein wm2 traegt kaum auf.

von Rolf M. (rmagnus)


Lesenswert?

Oliver R. schrieb:
> Stichworte sind libSDL2 und libjpeg. Mehr braucht es nicht.

Doch. Man braucht noch ein Programm, das die beiden nutzt, um das Bild 
dann anzuzeigen.

von Sheeva P. (sheevaplug)


Lesenswert?

Chris schrieb:
> Kiosk? So? Ohne Worte.
>
> Das Zauberwort heißt fbi.

Oder fim [1].

[1] https://www.nongnu.org/fbi-improved/

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.