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>
37 lines
1.3 KiB
JavaScript
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
|
|
}
|