LabCodeHub öffentliche Ansicht
Anmelden
Küpper / ehc-tvwall öffentlich
Branch: main
ehc-tvwall / scripts / console-mode.sh
Verlauf Rohdaten
R Rüdiger Küpper fix: [vo/gpu/libplacebo] vk->CreateSwapchainKHR(...): VK_ERROR_OUT_OF_HOST_MEMORY [vo/gpu/…
2f4d870b vor 11 Tagen
scripts/console-mode.sh 81 Zeilen · 2.9 KB · Shell
1
#!/usr/bin/env bash
2
# ===========================================================================
3
#  Stellt den Pi auf reinen Anzeigebetrieb um: kein Desktop mehr, Start direkt
4
#  in die Konsole, tvwall malt ueber DRM/KMS unmittelbar auf den Bildschirm.
5
#
6
#  Aufruf:  sudo /opt/tvwall/scripts/console-mode.sh [--zurueck]
7
#
8
#  --zurueck stellt den Desktop-Betrieb wieder her.
9
# ===========================================================================
10
set -euo pipefail
11
12
CONF="/etc/tvwall/tvwall.conf"
13
INSTALLER="/opt/tvwall/install.sh"
14
15
info() { printf '\033[1;36m==>\033[0m %s\n' "$*"; }
16
ok()   { printf '\033[1;32m  ✓\033[0m %s\n' "$*"; }
17
warn() { printf '\033[1;33m  !\033[0m %s\n' "$*"; }
18
die()  { printf '\033[1;31mFehler:\033[0m %s\n' "$*" >&2; exit 1; }
19
20
[[ $EUID -eq 0 ]] || die "bitte mit sudo starten:  sudo $0"
21
22
if [[ "${1:-}" == "--zurueck" ]]; then
23
  info "Stelle den Desktop-Betrieb wieder her"
24
  systemctl set-default graphical.target
25
  systemctl enable lightdm >/dev/null 2>&1 || true
26
  systemctl enable getty@tty1.service >/dev/null 2>&1 || true
27
  sed -i 's|^DISPLAY_MODE=.*|DISPLAY_MODE="auto"|' "$CONF"
28
  [[ -x "$INSTALLER" ]] && "$INSTALLER" --no-ap --yes >/dev/null
29
  ok "Desktop wieder aktiv - bitte neu starten:  sudo reboot"
30
  exit 0
31
fi
32
33
info "Boot-Ziel auf Konsole umstellen"
34
systemctl set-default multi-user.target >/dev/null
35
ok "Standard-Ziel: $(systemctl get-default)"
36
37
info "Desktop-Anmeldung abschalten"
38
for dm in lightdm gdm3 sddm; do
39
  if systemctl list-unit-files "$dm.service" >/dev/null 2>&1 &&
40
     systemctl is-enabled "$dm" >/dev/null 2>&1; then
41
    systemctl disable "$dm" >/dev/null 2>&1 || true
42
    systemctl stop "$dm" || true
43
    ok "$dm abgeschaltet"
44
  fi
45
done
46
sleep 1
47
[[ "$(pgrep -c 'labwc|wayfire|Xorg' 2>/dev/null || echo 0)" == "0" ]] \
48
  && ok "keine Desktop-Oberflaeche mehr aktiv" \
49
  || warn "es laeuft noch eine Oberflaeche - nach dem Neustart ist sie weg"
50
51
info "Bildausgabe auf DRM festlegen"
52
sed -i 's|^DISPLAY_MODE=.*|DISPLAY_MODE="drm"|' "$CONF"
53
ok 'DISPLAY_MODE="drm"'
54
55
# Der Benutzer des Dienstes braucht Zugriff auf Grafik und Konsole.
56
RUN_USER="$(sed -n 's/^RUN_USER="\(.*\)"/\1/p' "$CONF" | head -1)"
57
RUN_USER="${RUN_USER:-tvwall}"
58
for grp in video render input tty; do
59
  getent group "$grp" >/dev/null && usermod -aG "$grp" "$RUN_USER" 2>/dev/null || true
60
done
61
ok "Benutzer $RUN_USER hat Zugriff auf Grafik und Konsole"
62
63
if [[ -x "$INSTALLER" ]]; then
64
  info "Dienst auf die Konsolen-Variante umstellen"
65
  "$INSTALLER" --no-ap --yes >/dev/null
66
  ok "systemd-Dienst neu eingerichtet"
67
else
68
  warn "$INSTALLER fehlt - bitte install.sh aus dem Paket erneut ausfuehren"
69
fi
70
71
cat <<EOF
72
73
===========================================================================
74
 Fertig. Nach dem Neustart faehrt der Pi ohne Desktop hoch und zeigt
75
 sofort die Playliste.
76
77
   sudo reboot
78
79
 Zurueck zum Desktop:  sudo $0 --zurueck
80
===========================================================================
81
EOF