Grotti 3.7.0: Treiber für Kobra 4 und Marlin, smartere Dateien-Auswahl und einstellbare Etiketten.

Senden und Abbruch laufen über den Treiber, Orca-Doppelzeilen und tote Ideen-API fallen weg, Drucker folgen der Datei, Etikettenformat liegt in den Einstellungen.
This commit is contained in:
Dominic Gundel committed 2026-11-02 14:03:57 +01:00
1 parent 5081212212
commit db6a85a703
54 files changed
+3379 -384

No files matched your search

+4
View File
@@ -47,6 +47,10 @@ echo '[]' > "$STAGE/usr/lib/grotti/drucker.json"
cp "$ROOT/packaging/config.pi.json" "$STAGE/usr/share/grotti/config.pi.json"
cp "$ROOT/packaging/config.pi.json" "$STAGE/etc/grotti/config.json"
cp "$ROOT/packaging/grotti.service" "$STAGE/lib/systemd/system/grotti.service"
cp "$ROOT/packaging/grotti-marlin.service" "$STAGE/lib/systemd/system/grotti-marlin.service"
mkdir -p "$STAGE/etc/sudoers.d"
cp "$ROOT/packaging/sudoers.d/grotti-marlin" "$STAGE/etc/sudoers.d/grotti-marlin"
chmod 440 "$STAGE/etc/sudoers.d/grotti-marlin"
cp "$ROOT/docs/Anleitung-Installation-Pi.md" "$STAGE/usr/share/doc/grotti/"
cp "$ROOT/CHANGELOG.md" "$STAGE/usr/share/doc/grotti/changelog"
gzip -9 -f "$STAGE/usr/share/doc/grotti/changelog"
+7 -1
View File
@@ -34,9 +34,15 @@ configure)
_pg psql -c "GRANT ALL PRIVILEGES ON DATABASE grotti TO grotti;" >/dev/null 2>&1 || true
fi
if getent group dialout >/dev/null 2>&1; then
usermod -aG dialout grotti || true
fi
if command -v systemctl >/dev/null 2>&1; then
systemctl daemon-reload || true
systemctl enable grotti.service || true
systemctl enable grotti.service grotti-marlin.service || true
# start, nicht restart: ein laufender USB-Druck bleibt.
systemctl start grotti-marlin.service || true
systemctl restart grotti.service || true
fi
;;
+19
View File
@@ -0,0 +1,19 @@
[Unit]
Description=Grotti Marlin über USB
After=network.target
[Service]
Type=simple
User=grotti
Group=grotti
SupplementaryGroups=dialout
WorkingDirectory=/usr/lib/grotti
Environment=PYTHONUNBUFFERED=1
Environment=PYTHONPATH=/usr/lib/grotti
ExecStart=/usr/lib/grotti/venv/bin/python -m grotti.marlin_daemon
Restart=on-failure
RestartSec=2
KillMode=process
[Install]
WantedBy=multi-user.target
+1
View File
@@ -15,6 +15,7 @@ Environment=PYTHONUNBUFFERED=1
ExecStart=/usr/lib/grotti/venv/bin/python /usr/lib/grotti/server.py
Restart=on-failure
RestartSec=5
# USB-Marlin liegt in grotti-marlin.service und bleibt bei einem Neustart hier stehen.
# Stopp nicht 90 s hängen: nach TimeoutStopSec folgt SIGKILL
TimeoutStopSec=20
KillMode=mixed
+1
View File
@@ -0,0 +1 @@
grotti ALL=(root) NOPASSWD: /usr/bin/systemctl start grotti-marlin.service, /bin/systemctl start grotti-marlin.service