scoreboard-js/scoreboard/controllers/cli.js
Julian Appel c4325ae8ac Merge branch 'master' of https://git.jappel.io/jappel/scoreboard-js
Konflikt in scoreboard/controllers/cli.js zugunsten der Remote-Version
aufgeloest: openBrowser()/killBrowser() bleiben erhalten, da routes/admin.js
sie verwendet. Der lokale Testcode wurde verworfen (er rief zudem das
child_process-Modul faelschlich als Funktion auf).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 20:32:29 +02:00

37 lines
1.3 KiB
JavaScript

// CLI-Controller
// Startet und beendet den Anzeige-Browser auf dem Monitor-Rechner (Raspberry Pi).
// Chromium wird im Kiosk-Modus auf Display :0 geöffnet und zeigt die Monitor-Ansicht an.
const { spawn } = require('node:child_process')
let command; // Referenz auf den laufenden Chromium-Prozess
let browserOpen = false; // Status des Browsers, verhindert Mehrfachstart
// Startet Chromium im Kiosk-Modus, sofern noch kein Browser laeuft
async function openBrowser() {
if(!browserOpen) {
// Als Benutzer "pi" starten, damit der Prozess Zugriff auf das X-Display hat
command = spawn('sudo', ['-upi', 'chromium-browser', '--display=:0', '--incognito', '--noerrors', '--hide-crash-restore-bubble', '--disable-infobars', '--kiosk', 'http://localhost']);
command.stdout.on('data', data => {
console.log("stdout: ", data.toString());
});
command.stderr.on('data', data => {
console.log("sterr: ", data.toString());
});
browserOpen = true;
}
}
// Beendet den laufenden Browserprozess, sofern einer gestartet wurde
async function killBrowser() {
if(browserOpen) {
command.kill();
browserOpen = false;
}
}
module.exports = {
openBrowser, killBrowser
}