Linux Bash-Skript mit Konsole beim Start öffnen?

3 Antworten

Was soll das Skript machen?

Das passt meinem Verständnis nach alles vom Timing her nicht. rc.local wird abgearbeit, da gibt es noch gar keine Desktop-Umgebung und Du willst ein Terminal? Wie soll das gehen? Was steht in Deinem skript.sh bzw. was ist der Sinn und Zweck.

Ich befürchte, Du willst eigentlich etwas gestartet haben, was in einen Desktop-Manager und dessen Login-/ und Autostart Prozeduren gehört.

imsonoah 
Fragesteller
 05.06.2023, 19:45

Ach so okay, gut zu wissen. also das Skript soll Benutzereingaben annehmen und danach verarbeiten und weitere Aktionen ausführen. Wenn du mir helfen könntest, wärst du echt meine Rettung

0
evtldocha  05.06.2023, 19:54
@imsonoah

Lass uns das mal zusammenfassen: Es soll also so laufen:

  • Nutzer logged sich ein
  • Desktop Sitzung started
  • Terminal Programm geht (automatisch) auf
  • Im Terminal selbst wird ein weiteres Programm gestartet, das Eingaben entgegen nehmen kann
  • Benutzer kann Eingaben machen bis das Terminal mit - ja wie - beendet wird?

Verstehe ich das richtig?

0
imsonoah 
Fragesteller
 05.06.2023, 20:05
@evtldocha

Eher so:

  • Raspberry Pi geht an (ohne Login)
  • Terminal mit meinem Skript öffnet sich (für Benutzereingaben)
  • Skript startet Aktionen (Slideshow von Bilder und Videos)

Terminal wird (ausschließlich) nur beendet, wenn eine andere Aktion gestartet wird (durch das Skript selbst)

0
evtldocha  05.06.2023, 20:07
@imsonoah

Ok. Das verstehe ich nicht. Ein Terminal für Benutzereingaben ohne eingeloggten Benutzer ergibt für ich keinen sinnvollen Kontext.

1
imsonoah 
Fragesteller
 05.06.2023, 20:12
@evtldocha

Der Benutzer soll sich automatisch einloggen (ich glaube, das macht er sogar bereits), stell dir das so vor, ich benutze den Raspberry Pi für ein Display im Bilderrahmen, es ist lediglich eine Tastatur angeschlossen, um Zahlen einzugeben (für bestimmte Playlisten von Slideshows), deswegen soll direkt beim Anmachen des Pi's das Skript starten

0
Bushmills145  15.06.2023, 13:38
@imsonoah

statt einen Konsole-editor für Eingaben, als Dialog gedacht, wenn du sowieso schon eine grafische Oberfläche am Laufen hast, schau stattdessen mal nach dem Programm "zenity" - welches, aufgerufen z.B. aus einem Script, grafische Dialoge, auch Eingaben, erlaubt.

Andererseits brauchst du für Konsole-Eingaben auch keinen Editor - die Shell kann so etwas bereits, direkt aus dem Script heraus aufrufbar. Inklusive der Möglichkeit, damit Dialoge zu basteln.

0
imsonoah 
Fragesteller
 15.06.2023, 14:12
@Bushmills145

Also ich habe es bereits so gemacht, dass ich xterm mit dem Skript aufrufen lassen beim Autostart, da habe ich dann eine startup.desktop oder so angelegt :) Klappt soweit ganz gut. Jetzt habe ich halt nur das Problem, dass ich es nicht schaffe, eine flüssige Bilder-Video-Slideshow abzuspielen und ich habe schon echt viel probiert. vlc ist am flüssigsten, minimiert sich aber manchmal, mpv minimiert sich nicht, aber ist nicht so flüssig von den Videos her, kannst du mir da helfen?

0
Bushmills145  15.06.2023, 14:17
@imsonoah

mpv ist gut, und auch prima von Befehlszeile, also Script, steuerbar.

Ausgabedevice von mpv kannst du bestimmen, da ist ein anderes eventuell schneller.

0
imsonoah 
Fragesteller
 15.06.2023, 14:21
@Bushmills145

Ja das stimmt, aber leider sind die Videos nicht flüssig genug, hast du da Tipps, wie ich das hinbekomme?

sudo mpv --loop-playlist=inf --image-display-duration=15 --no-border --no-window-dragging --ontop --no-osc --fs --vo=gpu --hwdec=mmal-copy "${files[@]}"

mit --hwdec (also hardware-decoding) und --vo (video-output) habe ich schon rumgespielt und alles ausprobiert, nichts hilft leider... :/

0
Bushmills145  15.06.2023, 14:26
@imsonoah

was sicher schneller sein dürfte, aber mit sehr reduzierter Auflösung, wäre, Ausgabe nach ASCII zu konvertieren, mit -vo aa oder caca (benötigen noch installation der libs) - ansonsten hängt das halt sehr von deiner Hardware sowie Treiberunterstützung dafür ab.

-vo xv oder -vo sdl würde ich als die wahrscheinlichsten Kandidaten ansehen.

0
imsonoah 
Fragesteller
 15.06.2023, 14:35
@Bushmills145

Okay, mal eine neue Möglichkeit zum Ausprobieren :) Wie genau installiere ich die Libs?

Ich glaube --vo xv und --vo sdl hatte ich schon mal ausprobiert, hatte gar nicht funktioniert, aber müsste ich dafür auch extra etwas installieren?

Woher hast du diese Informationen eigentlich so easy? Ich habe voll lange danach gesucht xD

0
Bushmills145  15.06.2023, 14:39
@imsonoah

apt install libcaca0 sollte für caca (farbig im Gegensatz zu aalib) reichen. Da ASCII Grafik, täts das auch auf Konsole, ohne grafische Umgebung.

Woher? Das weiß man halt. Oder man schaut nach. mpv -vo help gibt dir eine Übersicht der unterstützten video outputs.

Ich verwende Linux aber auch nicht erst seit voriger Woche.

0
imsonoah 
Fragesteller
 15.06.2023, 14:49
@Bushmills145

Ich muss sagen, bin nicht so der Pro in Linux, kenne das nur von der Uni :) Also die Idee mit ASCII ist echt cool, aber leider nicht das, was ich suche

0
imsonoah 
Fragesteller
 15.06.2023, 14:53
@Bushmills145

Wenn ich es mit vlc probiere, also so:

cvlc --loop --fullscreen --no-osd --no-video-title --image-duration=15 --vout x11 "${files[@]}"

dann minimiert sich vlc und man sieht kurzzeitig folgende Fehlermeldung:

[61716a90] mmal_codec decoder: VCSM init succeeded: CMA
[61716a90] main decoder error: buffer deadlock prevented
0

Den Script in einer grafischen Umgebung wie X11 zu starten erfordert, dass du ein x-terminal startest, worin du den Script dann aufrufst. Dies ohne "sudo", sondern als der User, der auch in die grafische Oberfläche eingelogt ist.

Ein häufig installiertes x terminal ist xterm, und damit würdest du deinen script so starten:

xterm -e /pfad/zu/deinem/script

unter der Annahme, dass du bereits das eXecute bit des scripts gesetzt hast.

Möchtest du direkt den Konsole-Editor starten, rufst du stattdessen den nach -e auf.

(Ich gehe von "grafischer Umgebung" aus, weil du was von "Maus" und "Doppelklick" sagtest)

Woher ich das weiß:Berufserfahrung – LPI zertifiziert
Bushmills145  15.06.2023, 13:43

Grafische Umgebungen kennen auch die Möglichkeit, Scripte und Programme beim Start auszuführen, zu einem Zeitpunkt, dass die grafische Oberfläche bereits läuft (was beim Ausführen von rc.local noch nicht der Fall ist).

0
  1. Das Skript muss ausführbar sein! Sonst geht nix!
  2. ... oder Du sagst dem Rechner mit welcher Shell er das Skript öffnen soll.
sudo sh '/pfad/zum/skript.sh'
imsonoah 
Fragesteller
 31.05.2023, 21:43

Also das Skript habe ich mit:

chmod +x /pfad/zum/skript.sh

ausführbar gemacht

0