Headless Modus

Siril kann sowohl mit seiner grafischen Benutzeroberfläche (GUI) als auch mit einer Befehlszeilenschnittstelle (CLI) arbeiten, für die nicht einmal ein Bildschirm erforderlich ist. Es kann Bilder für andere Programme auf Remote-Computern oder oder in virtuellen Maschinen verarbeiten, indem es entweder Skripte oder in Echtzeit generierte Operationen, sogenannte Befehle, verwendet. Die Fähigkeiten des "headless Siril" sind in der Tat die der verfügbaren Befehle. Es gibt mehr als hundert Befehle, mit denen die Kalibrierung, die Verarbeitung und die photometrische Analyse automatisch durchgeführt werden können.

Befehle können auch in der GUI-Version von Siril verwendet werden, entweder über die eingebettete Befehlszeile am unteren Rand des Bedienfelds oder mit Skripten. Skripte sind einfach eine Textdatei, die eine Liste von Befehlen enthält. Es wird empfohlen, die Seite Skripte zu lesen, bevor Sie fortfahren.

In der Headless-Version können Befehle entweder durch Übergabe eines Skripts ausgeführt werden, oder indem die Standardeingabe als Skript gesetzt wird und Befehle in diese geschrieben werden, mit der -s - Kommandozeilenoption, oder indem benannte Pipes (named Pipes) verwendet werden.

Hier ist ein Beispiel für einen bash-Code, der den Headless-Modus aufruft, der den Master-Bias aufbaut und das Hintergrundrauschen in roter Farbe auf der Konsole ausgibt:

#!/bin/bash
# bash commands to prepare files

initdir=$(pwd)

######## Set your own variables #############
SCRIPTS_DIRECTORY=$initdir
SIRIL_PATH=siril-cli
#############################################

# Removing process folder if exists #
rm -rf $SCRIPTS_DIRECTORY/process

echo "Running siril bash script in $initdir"
output=$($SIRIL_PATH -d $SCRIPTS_DIRECTORY -s - <<ENDSIRIL

############################################
#
# Example of script that create a master-bias
# and print in red the noise of the image
#
############################################

requires 1.0.0

# Convert Bias Frames to .fit files
cd biases
convert bias -out=../process
cd ../process

# Stack Bias Frames to bias_stacked.fit
stack bias rej 3 3 -nonorm -out=master-bias
cd ../..

close
ENDSIRIL
)

log_line=$(echo "$output" | grep -o "log: Background noise value.*")
echo -e "\e[31m$log_line\e[0m"

echo done Siril part

Befehlsstrom (Pipe)

Beginnend mit Version 0.9.10 wurde ein neuer Modus eingeführt, in dem Befehle über eine "Named Pipe" gesendet und Logdateien und Status über eine andere abgefragt werden können. Dieser Modus wird mit dem Befehlszeilenargument -p aktiviert.

Das Protokoll ist recht einfach: Siril empfängt Befehle und gibt einige Aktualisierungen aus. Nur Befehle, die als skriptfähig gekennzeichnet sind, können mit diesem System verwendet werden. Immer wenn die Befehlseingangs-Pipe geschlossen oder der Befehl cancel ausgeführt wird, wird der laufende Prozess beendet, so als ob die Schaltfläche Stop in der Benutzeroberfläche angeklickt worden wäre. Die Pipes heißen siril_command.in und siril_command.out und sin im Verzeichnis /tmp auf Unix-basierten systemen verfügbar. Seit Version 1.1.0, können die Pfadnamen der Pipes mit den Optionen -r``und ``-w konfiguriert werden, was externen Programmen erlaubt, sie vor dem Start von Siril zu erstellen, typischerweise mit dem Befehl mkfifo. Ebenfalls neu in 1.1.0 ist, dass der Ping-Befehl ping einfach einen Status zurückgibt, der angibt, ob Siril bereit ist, einen Befehl zu verarbeiten oder bereits beschäftigt ist.

Die Ausgaben von Siril ist eine Folge einzeiliger Texte und wie folgt formatiert:

  • ready wird beim Start ausgegeben um anzuzeigen, dass Siril bereit ist Befehle zu verarbeiten

  • log: gefolgt von einer Logmeldung

  • status: verb [subject], wobei verb entweder starting, success, error oder exit sein kann (exit-Nachrichten sind noch nicht implementiert). Das Subjekt ist der Name des aktuellen Befehls, mit Ausnahme von exit, das anzeigt, dass siril einen fatalen Fehler erlitten hat und beendet werden muss.

  • progress: value% ist die Entsprechung eines Fortschrittsbalkens, es werden periodisch Prozente und manchmal 0% am Ende einer Verarbeitung als Leerlaufinformation gesendet.