🎉 Improved installer script ('installer.sh')
This commit is contained in:
parent
a36c14115a
commit
f0692d1816
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -115,7 +115,6 @@ remove_desktop_environments() {
|
|||||||
libreoffice* \
|
libreoffice* \
|
||||||
thunderbird* \
|
thunderbird* \
|
||||||
firefox* \
|
firefox* \
|
||||||
chromium-browser \
|
|
||||||
vlc* \
|
vlc* \
|
||||||
gimp* \
|
gimp* \
|
||||||
scratch* \
|
scratch* \
|
||||||
@ -165,10 +164,24 @@ install_minimal_x11() {
|
|||||||
x11-xserver-utils \
|
x11-xserver-utils \
|
||||||
xdotool \
|
xdotool \
|
||||||
unclutter \
|
unclutter \
|
||||||
chromium-browser \
|
|
||||||
openbox \
|
openbox \
|
||||||
|| error "X11 Installation fehlgeschlagen"
|
|| error "X11 Installation fehlgeschlagen"
|
||||||
|
|
||||||
|
# Chromium Browser mit Fallback-Mechanismus installieren
|
||||||
|
progress "Installiere Chromium Browser..."
|
||||||
|
if apt-get install -y chromium 2>/dev/null; then
|
||||||
|
log "✅ Chromium erfolgreich installiert"
|
||||||
|
elif apt-get install -y chromium-browser 2>/dev/null; then
|
||||||
|
log "✅ Chromium-Browser erfolgreich installiert"
|
||||||
|
elif apt-get install -y firefox-esr 2>/dev/null; then
|
||||||
|
warning "⚠️ Chromium nicht verfügbar - Firefox ESR als Fallback installiert"
|
||||||
|
# Firefox-Konfiguration für Kiosk-Modus anpassen
|
||||||
|
progress "Konfiguriere Firefox für Kiosk-Modus..."
|
||||||
|
FIREFOX_BROWSER="firefox-esr"
|
||||||
|
else
|
||||||
|
error "❌ Kein Browser verfügbar (chromium, chromium-browser, firefox-esr)"
|
||||||
|
fi
|
||||||
|
|
||||||
log "✅ Minimale X11-Umgebung installiert"
|
log "✅ Minimale X11-Umgebung installiert"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -316,6 +329,66 @@ install_system_dependencies() {
|
|||||||
create_backend_services() {
|
create_backend_services() {
|
||||||
log "=== ERSTELLE 3 BACKEND-SERVICES ==="
|
log "=== ERSTELLE 3 BACKEND-SERVICES ==="
|
||||||
|
|
||||||
|
# Python-Startskripte für die verschiedenen Ports erstellen
|
||||||
|
progress "Erstelle Python-Startskripte..."
|
||||||
|
|
||||||
|
# HTTPS-Startskript (Port 443)
|
||||||
|
cat > "$APP_DIR/start_https.py" << 'EOF'
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Füge App-Verzeichnis zum Python-Pfad hinzu
|
||||||
|
sys.path.insert(0, '/opt/myp')
|
||||||
|
|
||||||
|
# Setze Umgebungsvariablen
|
||||||
|
os.environ['FLASK_PORT'] = '443'
|
||||||
|
os.environ['FLASK_HOST'] = '0.0.0.0'
|
||||||
|
os.environ['FLASK_ENV'] = 'production'
|
||||||
|
|
||||||
|
try:
|
||||||
|
from app import app, get_ssl_context
|
||||||
|
|
||||||
|
ssl_context = get_ssl_context()
|
||||||
|
if ssl_context:
|
||||||
|
print("Starte HTTPS-Server auf Port 443...")
|
||||||
|
app.run(host='0.0.0.0', port=443, debug=False, ssl_context=ssl_context, threaded=True)
|
||||||
|
else:
|
||||||
|
print('SSL-Kontext nicht verfügbar')
|
||||||
|
sys.exit(1)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Fehler beim Starten des HTTPS-Servers: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# HTTP-Startskript (Port 80)
|
||||||
|
cat > "$APP_DIR/start_http.py" << 'EOF'
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
import os
|
||||||
|
|
||||||
|
# Füge App-Verzeichnis zum Python-Pfad hinzu
|
||||||
|
sys.path.insert(0, '/opt/myp')
|
||||||
|
|
||||||
|
# Setze Umgebungsvariablen
|
||||||
|
os.environ['FLASK_PORT'] = '80'
|
||||||
|
os.environ['FLASK_HOST'] = '0.0.0.0'
|
||||||
|
os.environ['FLASK_ENV'] = 'production'
|
||||||
|
|
||||||
|
try:
|
||||||
|
from app import app
|
||||||
|
|
||||||
|
print("Starte HTTP-Server auf Port 80...")
|
||||||
|
app.run(host='0.0.0.0', port=80, debug=False, threaded=True)
|
||||||
|
except Exception as e:
|
||||||
|
print(f"Fehler beim Starten des HTTP-Servers: {e}")
|
||||||
|
sys.exit(1)
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Skripte ausführbar machen
|
||||||
|
chmod +x "$APP_DIR/start_https.py"
|
||||||
|
chmod +x "$APP_DIR/start_http.py"
|
||||||
|
|
||||||
# Service 1: Kiosk-Backend (Port 5000)
|
# Service 1: Kiosk-Backend (Port 5000)
|
||||||
progress "Erstelle myp-kiosk.service (Port 5000)..."
|
progress "Erstelle myp-kiosk.service (Port 5000)..."
|
||||||
cat > "/etc/systemd/system/${SERVICE_NAME_KIOSK}.service" << EOF
|
cat > "/etc/systemd/system/${SERVICE_NAME_KIOSK}.service" << EOF
|
||||||
@ -374,20 +447,7 @@ Type=simple
|
|||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
WorkingDirectory=$APP_DIR
|
WorkingDirectory=$APP_DIR
|
||||||
ExecStart=/usr/bin/python3 -c "
|
ExecStart=/usr/bin/python3 $APP_DIR/start_https.py
|
||||||
import sys, os
|
|
||||||
sys.path.insert(0, '$APP_DIR')
|
|
||||||
os.environ['FLASK_PORT'] = '443'
|
|
||||||
os.environ['FLASK_HOST'] = '0.0.0.0'
|
|
||||||
os.environ['FLASK_ENV'] = 'production'
|
|
||||||
from app import app, get_ssl_context
|
|
||||||
ssl_context = get_ssl_context()
|
|
||||||
if ssl_context:
|
|
||||||
app.run(host='0.0.0.0', port=443, debug=False, ssl_context=ssl_context, threaded=True)
|
|
||||||
else:
|
|
||||||
print('SSL-Kontext nicht verfügbar')
|
|
||||||
exit(1)
|
|
||||||
"
|
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
StartLimitBurst=5
|
StartLimitBurst=5
|
||||||
@ -431,15 +491,7 @@ Type=simple
|
|||||||
User=root
|
User=root
|
||||||
Group=root
|
Group=root
|
||||||
WorkingDirectory=$APP_DIR
|
WorkingDirectory=$APP_DIR
|
||||||
ExecStart=/usr/bin/python3 -c "
|
ExecStart=/usr/bin/python3 $APP_DIR/start_http.py
|
||||||
import sys, os
|
|
||||||
sys.path.insert(0, '$APP_DIR')
|
|
||||||
os.environ['FLASK_PORT'] = '80'
|
|
||||||
os.environ['FLASK_HOST'] = '0.0.0.0'
|
|
||||||
os.environ['FLASK_ENV'] = 'production'
|
|
||||||
from app import app
|
|
||||||
app.run(host='0.0.0.0', port=80, debug=False, threaded=True)
|
|
||||||
"
|
|
||||||
Restart=always
|
Restart=always
|
||||||
RestartSec=5
|
RestartSec=5
|
||||||
StartLimitBurst=5
|
StartLimitBurst=5
|
||||||
@ -469,7 +521,7 @@ ReadWritePaths=$APP_DIR
|
|||||||
WantedBy=multi-user.target
|
WantedBy=multi-user.target
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
log "✅ 3 Backend-Services erstellt"
|
log "✅ 3 Backend-Services mit separaten Python-Skripten erstellt"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ========================== AUTOLOGIN KONFIGURIEREN ==========================
|
# ========================== AUTOLOGIN KONFIGURIEREN ==========================
|
||||||
@ -498,6 +550,110 @@ configure_kiosk_browser() {
|
|||||||
|
|
||||||
KIOSK_HOME="/home/$KIOSK_USER"
|
KIOSK_HOME="/home/$KIOSK_USER"
|
||||||
|
|
||||||
|
# Openbox-Konfiguration für randlosen Vollbildmodus
|
||||||
|
progress "Konfiguriere Openbox für randlosen Vollbildmodus..."
|
||||||
|
mkdir -p "$KIOSK_HOME/.config/openbox"
|
||||||
|
|
||||||
|
cat > "$KIOSK_HOME/.config/openbox/rc.xml" << 'EOF'
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<openbox_config xmlns="http://openbox.org/3.4/rc" xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||||
|
<resistance>
|
||||||
|
<strength>10</strength>
|
||||||
|
<screen_edge_strength>20</screen_edge_strength>
|
||||||
|
</resistance>
|
||||||
|
<focus>
|
||||||
|
<focusNew>yes</focusNew>
|
||||||
|
<followMouse>no</followMouse>
|
||||||
|
</focus>
|
||||||
|
<placement>
|
||||||
|
<policy>Smart</policy>
|
||||||
|
<center>yes</center>
|
||||||
|
</placement>
|
||||||
|
<theme>
|
||||||
|
<name>Clearlooks</name>
|
||||||
|
<titleLayout>NLIMC</titleLayout>
|
||||||
|
<keepBorder>no</keepBorder>
|
||||||
|
<animateIconify>yes</animateIconify>
|
||||||
|
</theme>
|
||||||
|
<desktops>
|
||||||
|
<number>1</number>
|
||||||
|
<firstdesk>1</firstdesk>
|
||||||
|
<names>
|
||||||
|
<name>Desktop 1</name>
|
||||||
|
</names>
|
||||||
|
<popupTime>875</popupTime>
|
||||||
|
</desktops>
|
||||||
|
<resize>
|
||||||
|
<drawContents>yes</drawContents>
|
||||||
|
<popupShow>Nonpixel</popupShow>
|
||||||
|
<popupPosition>Center</popupPosition>
|
||||||
|
</resize>
|
||||||
|
<margins>
|
||||||
|
<top>0</top>
|
||||||
|
<bottom>0</bottom>
|
||||||
|
<left>0</left>
|
||||||
|
<right>0</right>
|
||||||
|
</margins>
|
||||||
|
<dock>
|
||||||
|
<position>TopLeft</position>
|
||||||
|
<floatingX>0</floatingX>
|
||||||
|
<floatingY>0</floatingY>
|
||||||
|
<noStrut>no</noStrut>
|
||||||
|
<stacking>Above</stacking>
|
||||||
|
<direction>Vertical</direction>
|
||||||
|
<autoHide>no</autoHide>
|
||||||
|
<hideDelay>300</hideDelay>
|
||||||
|
<showDelay>300</showDelay>
|
||||||
|
<moveButton>Middle</moveButton>
|
||||||
|
</dock>
|
||||||
|
<keyboard>
|
||||||
|
<!-- Deaktiviere alle Tastenkombinationen für Kiosk-Sicherheit -->
|
||||||
|
</keyboard>
|
||||||
|
<mouse>
|
||||||
|
<dragThreshold>8</dragThreshold>
|
||||||
|
<doubleClickTime>200</doubleClickTime>
|
||||||
|
<screenEdgeWarpTime>400</screenEdgeWarpTime>
|
||||||
|
</mouse>
|
||||||
|
<applications>
|
||||||
|
<!-- Chromium/Browser Konfiguration -->
|
||||||
|
<application name="chromium*">
|
||||||
|
<decor>no</decor>
|
||||||
|
<shade>no</shade>
|
||||||
|
<position force="yes">
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
</position>
|
||||||
|
<size>
|
||||||
|
<width>100%</width>
|
||||||
|
<height>100%</height>
|
||||||
|
</size>
|
||||||
|
<fullscreen>yes</fullscreen>
|
||||||
|
<maximized>yes</maximized>
|
||||||
|
<skip_pager>yes</skip_pager>
|
||||||
|
<skip_taskbar>yes</skip_taskbar>
|
||||||
|
<layer>above</layer>
|
||||||
|
</application>
|
||||||
|
<application name="firefox*">
|
||||||
|
<decor>no</decor>
|
||||||
|
<shade>no</shade>
|
||||||
|
<position force="yes">
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
</position>
|
||||||
|
<size>
|
||||||
|
<width>100%</width>
|
||||||
|
<height>100%</height>
|
||||||
|
</size>
|
||||||
|
<fullscreen>yes</fullscreen>
|
||||||
|
<maximized>yes</maximized>
|
||||||
|
<skip_pager>yes</skip_pager>
|
||||||
|
<skip_taskbar>yes</skip_taskbar>
|
||||||
|
<layer>above</layer>
|
||||||
|
</application>
|
||||||
|
</applications>
|
||||||
|
</openbox_config>
|
||||||
|
EOF
|
||||||
|
|
||||||
# .bashrc für automatischen X-Start erweitern
|
# .bashrc für automatischen X-Start erweitern
|
||||||
progress "Konfiguriere automatischen X-Start..."
|
progress "Konfiguriere automatischen X-Start..."
|
||||||
cat >> "$KIOSK_HOME/.bashrc" << 'EOF'
|
cat >> "$KIOSK_HOME/.bashrc" << 'EOF'
|
||||||
@ -509,18 +665,32 @@ fi
|
|||||||
EOF
|
EOF
|
||||||
|
|
||||||
# .xinitrc für Kiosk-Session erstellen
|
# .xinitrc für Kiosk-Session erstellen
|
||||||
progress "Erstelle Kiosk X-Session..."
|
progress "Erstelle optimierte Kiosk X-Session..."
|
||||||
cat > "$KIOSK_HOME/.xinitrc" << 'EOF'
|
cat > "$KIOSK_HOME/.xinitrc" << 'EOF'
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
# Bildschirmschoner und Energieverwaltung deaktivieren
|
# Bildschirmauflösung automatisch erkennen
|
||||||
|
RESOLUTION=$(xrandr | grep '*' | head -1 | awk '{print $1}')
|
||||||
|
if [ -z "$RESOLUTION" ]; then
|
||||||
|
RESOLUTION="1920x1080" # Fallback-Auflösung
|
||||||
|
fi
|
||||||
|
WIDTH=$(echo $RESOLUTION | cut -d'x' -f1)
|
||||||
|
HEIGHT=$(echo $RESOLUTION | cut -d'x' -f2)
|
||||||
|
|
||||||
|
echo "Erkannte Bildschirmauflösung: ${WIDTH}x${HEIGHT}"
|
||||||
|
|
||||||
|
# Bildschirmschoner und Energieverwaltung komplett deaktivieren
|
||||||
xset s off
|
xset s off
|
||||||
xset s noblank
|
xset s noblank
|
||||||
xset s noexpose
|
xset s noexpose
|
||||||
xset -dpms
|
xset -dpms
|
||||||
|
xset s 0 0
|
||||||
|
|
||||||
# Mauszeiger verstecken
|
# Mauszeiger verstecken (aggressiver)
|
||||||
unclutter -idle 0.5 -root &
|
unclutter -idle 0.1 -root -noevents &
|
||||||
|
|
||||||
|
# Openbox im Hintergrund starten
|
||||||
|
openbox &
|
||||||
|
|
||||||
# Warte auf Backend-Services
|
# Warte auf Backend-Services
|
||||||
echo "Warte auf MYP Backend-Services..."
|
echo "Warte auf MYP Backend-Services..."
|
||||||
@ -537,8 +707,10 @@ done
|
|||||||
|
|
||||||
echo "Backend erreichbar - starte Kiosk-Browser..."
|
echo "Backend erreichbar - starte Kiosk-Browser..."
|
||||||
|
|
||||||
# Chromium im Vollbild-Kiosk-Modus
|
# Browser-Erkennung und -Start mit optimierten Vollbild-Flags
|
||||||
exec chromium-browser \
|
if command -v chromium >/dev/null 2>&1; then
|
||||||
|
echo "Starte Chromium Browser mit Auflösung ${WIDTH}x${HEIGHT}..."
|
||||||
|
exec chromium \
|
||||||
--kiosk \
|
--kiosk \
|
||||||
--no-sandbox \
|
--no-sandbox \
|
||||||
--disable-infobars \
|
--disable-infobars \
|
||||||
@ -557,6 +729,8 @@ exec chromium-browser \
|
|||||||
--no-default-browser-check \
|
--no-default-browser-check \
|
||||||
--autoplay-policy=no-user-gesture-required \
|
--autoplay-policy=no-user-gesture-required \
|
||||||
--start-fullscreen \
|
--start-fullscreen \
|
||||||
|
--start-maximized \
|
||||||
|
--window-size=${WIDTH},${HEIGHT} \
|
||||||
--window-position=0,0 \
|
--window-position=0,0 \
|
||||||
--user-data-dir=/home/kiosk/.chromium-kiosk \
|
--user-data-dir=/home/kiosk/.chromium-kiosk \
|
||||||
--disable-background-mode \
|
--disable-background-mode \
|
||||||
@ -566,14 +740,106 @@ exec chromium-browser \
|
|||||||
--disable-dev-shm-usage \
|
--disable-dev-shm-usage \
|
||||||
--memory-pressure-off \
|
--memory-pressure-off \
|
||||||
--max_old_space_size=512 \
|
--max_old_space_size=512 \
|
||||||
|
--disable-background-timer-throttling \
|
||||||
|
--disable-backgrounding-occluded-windows \
|
||||||
|
--disable-renderer-backgrounding \
|
||||||
|
--disable-features=VizDisplayCompositor \
|
||||||
|
--enable-features=OverlayScrollbar \
|
||||||
|
--hide-scrollbars \
|
||||||
http://localhost:5000
|
http://localhost:5000
|
||||||
|
elif command -v chromium-browser >/dev/null 2>&1; then
|
||||||
|
echo "Starte Chromium-Browser mit Auflösung ${WIDTH}x${HEIGHT}..."
|
||||||
|
exec chromium-browser \
|
||||||
|
--kiosk \
|
||||||
|
--no-sandbox \
|
||||||
|
--disable-infobars \
|
||||||
|
--disable-session-crashed-bubble \
|
||||||
|
--disable-restore-session-state \
|
||||||
|
--disable-web-security \
|
||||||
|
--disable-features=TranslateUI \
|
||||||
|
--disable-extensions \
|
||||||
|
--disable-plugins \
|
||||||
|
--disable-popup-blocking \
|
||||||
|
--disable-prompt-on-repost \
|
||||||
|
--disable-sync \
|
||||||
|
--disable-translate \
|
||||||
|
--noerrdialogs \
|
||||||
|
--no-first-run \
|
||||||
|
--no-default-browser-check \
|
||||||
|
--autoplay-policy=no-user-gesture-required \
|
||||||
|
--start-fullscreen \
|
||||||
|
--start-maximized \
|
||||||
|
--window-size=${WIDTH},${HEIGHT} \
|
||||||
|
--window-position=0,0 \
|
||||||
|
--user-data-dir=/home/kiosk/.chromium-kiosk \
|
||||||
|
--disable-background-mode \
|
||||||
|
--force-device-scale-factor=1.0 \
|
||||||
|
--disable-pinch \
|
||||||
|
--overscroll-history-navigation=0 \
|
||||||
|
--disable-dev-shm-usage \
|
||||||
|
--memory-pressure-off \
|
||||||
|
--max_old_space_size=512 \
|
||||||
|
--disable-background-timer-throttling \
|
||||||
|
--disable-backgrounding-occluded-windows \
|
||||||
|
--disable-renderer-backgrounding \
|
||||||
|
--disable-features=VizDisplayCompositor \
|
||||||
|
--enable-features=OverlayScrollbar \
|
||||||
|
--hide-scrollbars \
|
||||||
|
http://localhost:5000
|
||||||
|
elif command -v firefox-esr >/dev/null 2>&1; then
|
||||||
|
echo "Starte Firefox ESR mit Auflösung ${WIDTH}x${HEIGHT}..."
|
||||||
|
# Firefox-Profil für Kiosk erstellen
|
||||||
|
mkdir -p /home/kiosk/.mozilla/firefox/kiosk.default
|
||||||
|
cat > /home/kiosk/.mozilla/firefox/kiosk.default/user.js << FIREFOXEOF
|
||||||
|
user_pref("browser.shell.checkDefaultBrowser", false);
|
||||||
|
user_pref("browser.startup.homepage", "http://localhost:5000");
|
||||||
|
user_pref("toolkit.legacyUserProfileCustomizations.stylesheets", true);
|
||||||
|
user_pref("browser.tabs.warnOnClose", false);
|
||||||
|
user_pref("browser.sessionstore.resume_from_crash", false);
|
||||||
|
user_pref("security.tls.insecure_fallback_hosts", "localhost");
|
||||||
|
user_pref("browser.cache.disk.enable", false);
|
||||||
|
user_pref("browser.cache.memory.enable", true);
|
||||||
|
user_pref("browser.cache.offline.enable", false);
|
||||||
|
user_pref("network.http.use-cache", false);
|
||||||
|
user_pref("browser.fullscreen.autohide", true);
|
||||||
|
user_pref("dom.disable_open_during_load", false);
|
||||||
|
user_pref("privacy.popups.disable_from_plugins", 0);
|
||||||
|
user_pref("dom.popup_maximum", 0);
|
||||||
|
FIREFOXEOF
|
||||||
|
|
||||||
|
# Firefox CSS für randlosen Vollbildmodus
|
||||||
|
mkdir -p /home/kiosk/.mozilla/firefox/kiosk.default/chrome
|
||||||
|
cat > /home/kiosk/.mozilla/firefox/kiosk.default/chrome/userChrome.css << FIREFOXCSS
|
||||||
|
/* Firefox Kiosk Mode - Hide all UI elements */
|
||||||
|
#navigator-toolbox { display: none !important; }
|
||||||
|
#sidebar-box { display: none !important; }
|
||||||
|
#urlbar-container { display: none !important; }
|
||||||
|
#TabsToolbar { display: none !important; }
|
||||||
|
#nav-bar { display: none !important; }
|
||||||
|
#PersonalToolbar { display: none !important; }
|
||||||
|
.toolbar-items { display: none !important; }
|
||||||
|
#main-window[sizemode="fullscreen"] .tabbrowser-tab {
|
||||||
|
visibility: collapse !important;
|
||||||
|
}
|
||||||
|
FIREFOXCSS
|
||||||
|
|
||||||
|
exec firefox-esr \
|
||||||
|
--kiosk \
|
||||||
|
--width=${WIDTH} \
|
||||||
|
--height=${HEIGHT} \
|
||||||
|
--profile /home/kiosk/.mozilla/firefox/kiosk.default \
|
||||||
|
http://localhost:5000
|
||||||
|
else
|
||||||
|
echo "FEHLER: Kein Browser verfügbar!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Berechtigungen setzen
|
# Berechtigungen setzen
|
||||||
chmod +x "$KIOSK_HOME/.xinitrc"
|
chmod +x "$KIOSK_HOME/.xinitrc"
|
||||||
chown -R "$KIOSK_USER:$KIOSK_USER" "$KIOSK_HOME"
|
chown -R "$KIOSK_USER:$KIOSK_USER" "$KIOSK_HOME"
|
||||||
|
|
||||||
log "✅ Kiosk-Browser konfiguriert"
|
log "✅ Kiosk-Browser mit optimiertem Vollbildmodus konfiguriert"
|
||||||
}
|
}
|
||||||
|
|
||||||
# ========================== PRODUKTIONS-KIOSK SETUP ==========================
|
# ========================== PRODUKTIONS-KIOSK SETUP ==========================
|
||||||
|
Loading…
x
Reference in New Issue
Block a user