Programm im Hintergrund ausführen und Standardausgabe abfragen

FatManStanding

Lt. Junior Grade
Registriert
Aug. 2021
Beiträge
385
Hallo,

ich starte in einem Shell-Script 2 Programme (den Bildbetrachter Gwenview mit einem Bild und KColorChooser [um den Farbcode eines Pixels auszuwählen]). Beiden sollen im Hintergrund ausgeführt werden weil das Script weiter läuft.

Code:
gwenview &
color=$(kcolorchooser --print)

Die Option "--print" gewirkt, dass der ausgewählte Farbcode in die Variable $color geschrieben wird und vom Script weiterverarbeitet werden kann. Das geht soweit. Ich möchte das gerne so erweitern, dass die beiden Fenster mit "wmctrl" ausgerichtet werden, gwenview ganz rechts und KColorChooser ganz links ohne Überlappung. Das wäre z. B. so möglich:

Code:
wmctrl -r KColorChooser -e 0,188,328,558,418

Das geht aber nicht, weil das Script bei der Zeile "color=$(kcolorchooser --print)" stehen bleibt und auf die Eingabe wartet, die korrekte Position wird durch wmctrl erst gemacht wenn die Farbe schon korrekt ausgewählt wurde.

Was geht ist:

Code:
gwenview &
kcolorchooser --print
wmctrl -r KColorChooser -e 0,188,328,558,418

Wenn ich das im Terminal ausführe werden beide Programme ggestartet, KColorChooser ausgerichtet und der Eingabeprompt erscheint, das Script ist also "fertig". Wähle ich dann im KColorChooser die Farbe aus wird sie im Temrinal hinter dem Prompt angezeigt. Da das Script aber nicht mehr läuft kann der Farbcode nicht mehr weiterverarbeitet werden. Es braucht hier irgendwas, dass nach dem letzten Aufruf auf die Farbauswahl wartet, also auf einen Wert in stdout.
 
Bash:
#!/bin/bash
gwenview&
coproc k { kcolorchooser --print ; }
wmctrl -r KColorChooser -e 0,188,328,558,418
read farbe <&"${k[0]}"
echo "$farbe"
 
  • Gefällt mir
Reaktionen: Kuristina
Zurück
Oben