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>
55 lines
2.5 KiB
Bash
Executable File
55 lines
2.5 KiB
Bash
Executable File
#!/bin/sh
|
|
### Wird per Ein-Zeilen-Sed-Patch (siehe initrd-hooks/casper-bottom/99casperboot)
|
|
### GANZ AM ANFANG von start-ubiquity-dm eingebunden ("."), also BEVOR
|
|
### ubiquity-dm den X-Server startet und Ubiquity selbst exec't.
|
|
###
|
|
### Zweck: die AT-SPI-Barrierefreiheits-Bruecke (atk-bridge) fuer Ubiquitys
|
|
### GTK-Prozess aktivieren, damit atspi_click.py (siehe
|
|
### /opt/tuxflotte/scripts/) Buttons ueber ihre Rolle/ihren Namen im
|
|
### Accessibility-Baum anklicken kann statt ueber Bildschirmkoordinaten.
|
|
### Der xdotool-Koordinaten-Ansatz ist an ueberlappenden X11-Fenstern durch
|
|
### die Metacity-Fensterdekoration gescheitert (mehrere Fenster aehnlicher
|
|
### Groesse, "groesstes Fenster"-Heuristik traf wiederholt das falsche -
|
|
### siehe ADR-0023-Nachtrag).
|
|
###
|
|
### WICHTIG: das muss VOR dem GTK-Init von Ubiquity passieren - eine erst
|
|
### nachtraeglich verfuegbare Bruecke wird von einer bereits laufenden
|
|
### GTK-Anwendung nicht mehr nachgeladen (GTK_MODULES wird nur beim Start
|
|
### ausgewertet). Deshalb blockierend (kein Hintergrund-"&" fuer die
|
|
### Paketinstallation) und deshalb im Skript, das ubiquity-dm selbst
|
|
### aufruft, statt im spaeter laufenden Autoklicker-Service.
|
|
###
|
|
### Absichtlich EIN gemeinsamer apt-get-Aufruf fuer alle drei Pakete (statt
|
|
### getrennter Aufrufe je Skript) - der Autoklicker installiert xdotool
|
|
### zeitlich nah, ein zweiter paralleler apt-get/dpkg-Aufruf haette real
|
|
### beobachtete Lock-Konflikte riskiert (debconf: "config.dat is locked by
|
|
### another process").
|
|
|
|
for pkg in at-spi2-core dbus-x11 python3-pyatspi; do
|
|
dpkg -s "$pkg" >/dev/null 2>&1 && continue
|
|
if [ "${_tuxflotte_atspi_apt_updated:-}" != "1" ]; then
|
|
apt-get update -qq
|
|
_tuxflotte_atspi_apt_updated=1
|
|
fi
|
|
DEBIAN_FRONTEND=noninteractive apt-get install -y "$pkg"
|
|
done
|
|
|
|
export GTK_MODULES="gail:atk-bridge"
|
|
export NO_AT_BRIDGE=0
|
|
|
|
# Eigene Session-Bus-Instanz, falls keine geerbt wurde - die minimale
|
|
# ubiquity-dm-X-Sitzung startet anders als eine normale Desktop-Sitzung
|
|
# vermutlich keinen eigenen Session-Bus.
|
|
if [ -z "${DBUS_SESSION_BUS_ADDRESS:-}" ] && command -v dbus-launch >/dev/null 2>&1; then
|
|
eval "$(dbus-launch --sh-syntax)"
|
|
export DBUS_SESSION_BUS_ADDRESS DBUS_SESSION_BUS_PID
|
|
fi
|
|
|
|
if command -v at-spi-bus-launcher >/dev/null 2>&1; then
|
|
at-spi-bus-launcher --launch-immediately >/var/log/tuxflotte-atspi-bus.log 2>&1 &
|
|
# Kurz abwarten, bis der a11y-Bus unter org.a11y.Bus registriert ist,
|
|
# bevor ubiquity-dm/Ubiquity (naechste Zeile in start-ubiquity-dm)
|
|
# GTK initialisiert.
|
|
sleep 1
|
|
fi
|