#!/bin/bash

# Mapping von XKB-Codes zu ISO 639-1 Sprachcodes
declare -A xkb_to_iso=(
    [dk]="da"
    [se]="sv"
    [cz]="cs"
    [ee]="et"
    [no]="nb"
    [ua]="uk"
    [br]="pt"
    [il]="he"
    [br]="pt"
    
)

# Lese die Ausgabe in eine Variable
if [ -n "$1" ]; then
    layout_string="$1"
else
    # Falls kein Argument übergeben wurde, aus /etc/default/keyboard auslesen
    layout_string=$(awk -F\" '/XKBLAYOUT/{print $2}' /etc/default/keyboard)
fi

# Teile die Zeichenkette an den Kommas
IFS=',' read -ra layouts <<< "$layout_string"

# Ersetze XKB-Codes durch ISO-Codes
for i in "${!layouts[@]}"; do
    if [[ -n "${xkb_to_iso[${layouts[$i]}]}" ]]; then
        layouts[$i]="${xkb_to_iso[${layouts[$i]}]}"
    fi
done

# Überprüfe die Anzahl der Werte
if [ ${#layouts[@]} -gt 1 ]; then
    gsettings set org.maliit.keyboard.maliit enabled-languages "['${layouts[0]}', '${layouts[1]}', 'en', 'it', 'da', 'fr', 'es', 'pt', 'tr', 'nl', 'sv', 'fi', 'cs', 'ru', 'emoji']"
    gsettings set org.maliit.keyboard.maliit active-language "${layouts[1]}"
    gsettings set org.maliit.keyboard.maliit spell-checking-languages "['${layouts[0]}', '${layouts[1]}', 'en', 'it', 'da', 'fr', 'es', 'pt', 'tr', 'nl', 'sv', 'fi', 'cs', 'ru']"
else
    gsettings set org.maliit.keyboard.maliit enabled-languages "['${layouts[0]}', 'en', 'it', 'da', 'fr', 'es', 'pt', 'tr', 'nl', 'sv', 'fi', 'cs', 'ru', 'emoji']"
    gsettings set org.maliit.keyboard.maliit active-language "${layouts[0]}"
    gsettings set org.maliit.keyboard.maliit spell-checking-languages "['${layouts[0]}', 'en', 'it', 'da', 'fr', 'es', 'pt', 'tr', 'nl', 'sv', 'fi', 'cs', 'ru']"
fi

if [ "$EUID" -eq 0 ]; then
    mkdir -p /var/lib/sddm/.config/dconf/
    cp -af /root/.config/dconf/user /var/lib/sddm/.config/dconf/
    chown -R sddm:sddm /var/lib/sddm
fi

rm -f ~/.config/autostart/maliit-fix.desktop

