Thomas Stallinger a415de1eaa feat: Autoklicker auf AT-SPI umgestellt statt Bildschirmkoordinaten
xdotool/Enter-Taste-Ansatz war nicht zuverlaessig genug (Metacity erzeugt
mehrere ueberlappende X11-Fenster aehnlicher Groesse, 'groesstes Fenster'-
Heuristik traf wiederholt das falsche; Enter aktiviert auf der
Partitionierungs-Uebersicht einen Ausklapp-Pfeil statt 'Jetzt
installieren' - siehe ADR-0023-Nachtrag).

- live-updates/usr/share/ubiquity/tuxflotte-atspi-env.sh (neu): aktiviert
  GTK_MODULES=gail:atk-bridge + Session-/A11y-Bus VOR dem GTK-Start von
  Ubiquity - muss vor dem Init passieren, eine Bruecke wird von einer
  bereits laufenden GTK-App nicht nachgeladen.
- initrd-hooks/casper-bottom/99casperboot: bindet obige Datei per
  Ein-Zeilen-Sed-Patch in start-ubiquity-dm ein (dry-run gegen den echten
  Datei-Inhalt verifiziert).
- live-updates/opt/tuxflotte/scripts/atspi_click.py (neu): findet+klickt
  den passenden 'Weiter'-Button ueber Rolle+Name im Accessibility-Baum,
  feste deutsche Werteliste (Sprache per Preseed fest de_DE), niemals
  Zurueck/Abbrechen/Beenden.
- autoclicker.sh: ruft atspi_click.py in Schleife statt xdotool/Enter auf,
  wartet auf den ubiquity-Prozess statt auf den X-Socket.

Noch nicht live verifiziert - naechster Schritt: QEMU-Testlauf auf lenny.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-29 15:34:28 +02:00

72 lines
3.0 KiB
Bash
Executable File

#! /bin/sh
PREREQ=""
prereqs()
{
echo "$PREREQ"
}
case $1 in
# get pre-requisites
prereqs)
prereqs
exit 0
;;
esac
# Ueberschreibt das originale 99casperboot (macht nur `touch
# /run/.casper-boot`) statt einen zusaetzlichen, neuen Hook-Skriptnamen
# einzufuehren: initramfs-tools generiert beim ISO-Bau eine ORDER-Datei
# (scripts/casper-bottom/ORDER) mit der fest verdrahteten Aufruf-Reihenfolge
# aller casper-bottom-Skripte - real durch Extraktion des echten initrd.lz
# mit unmkinitramfs bestaetigt. Ein per Initrd-Cpio-Layer NEU hinzugefuegtes
# Skript taucht in dieser ORDER-Datei nicht auf und wird nie aufgerufen,
# selbst wenn die Datei im initramfs physisch vorhanden ist (erste Version
# dieses Fixes ist daran gescheitert). Das Ueberschreiben eines bereits in
# ORDER referenzierten Pfads funktioniert dagegen zuverlaessig (spaetere
# cpio-Schichten ueberschreiben Dateiinhalte am selben Pfad, siehe
# scripts/lib/initrd.sh - derselbe Mechanismus, der schon fuer das
# Kexec-Preseed in Phase 1 verifiziert wurde). 99casperboot ist laut ORDER
# das letzte casper-bottom-Skript ueberhaupt - garantiert nach 05mountpoints,
# das /cdrom nach /root/cdrom umhaengt und damit die Voraussetzung fuer den
# folgenden Kopiervorgang schafft.
if [ -d /root/cdrom/updates ]; then
cp -a /root/cdrom/updates/. /root/
fi
# Ubiquity stuerzt im automatic-ubiquity-GTK-Modus real reproduzierbar ab
# (TypeError: Argument 1 does not allow None as a value), sobald
# enable_download_updates(False) den Netzwerkstatus als "nicht verbunden"
# meldet: ubi-prepare.py uebergibt das Ergebnis von
# self.controller.get_string('ubiquity/text/label_download_updates_na')
# ungeprueft an GtkLabel.set_label() - fehlt fuer diese Vorlage/Sprache ein
# Uebersetzungsstring, liefert get_string() None statt eines leeren Strings,
# und GTK akzeptiert kein None als Label-Text (real ueber QEMU-Testlauf
# gefunden, siehe ADR-0023-Nachtrag). Gezielter Sed-Patch statt vollstaendigem
# Datei-Ersatz, um nicht die komplette Drittanbieter-Datei mitpflegen zu
# muessen - betrifft nur die eine Zeile, "or ''" faengt jeden None-Rueckgabewert
# ab, unabhaengig von der genauen Ursache der fehlenden Uebersetzung.
ubi_prepare="/root/usr/lib/ubiquity/plugins/ubi-prepare.py"
if [ -f "$ubi_prepare" ]; then
sed -i \
"s/self\.controller\.get_string(template))/self.controller.get_string(template) or '')/" \
"$ubi_prepare"
fi
# AT-SPI-Bruecke fuer den Autoklicker (atspi_click.py) muss VOR dem
# GTK-Start von Ubiquity aktiv sein - siehe live-updates/usr/share/ubiquity/
# tuxflotte-atspi-env.sh (dorthin per casper-bottom-Kopie oben bereits nach
# /root/usr/share/ubiquity/ ausgeliefert). Einzeilige Einbindung direkt nach
# dem fruehen Existenz-Check von ubiquity-dm - alles Weitere, inkl.
# Paketinstallation, uebernimmt die eingebundene Datei selbst.
start_ubiquity_dm="/root/usr/share/ubiquity/start-ubiquity-dm"
if [ -f "$start_ubiquity_dm" ]; then
sed -i \
'/^test -x \/usr\/bin\/ubiquity-dm || exit 0$/a\
. /usr/share/ubiquity/tuxflotte-atspi-env.sh' \
"$start_ubiquity_dm"
fi
touch /run/.casper-boot