57 lines
2.1 KiB
Bash
57 lines
2.1 KiB
Bash
#!/bin/sh
|
|
# $1 = task name, $2..$N = packages (from "Packages: list")
|
|
# Runtime policy:
|
|
# - language-pack-gnome-* > MATE/GNOME/LXDE
|
|
# - language-pack-kde-* > KDE (Triskel)
|
|
# - abrowser-/firefox-locale-* > all desktops (MATE/GNOME/LXDE/KDE), not console
|
|
# - libreoffice-l10n-*, icedove-locale-* > MATE/GNOME/KDE; not LXDE/console
|
|
# - skip non-existent candidates (avoid APT 100)
|
|
|
|
shift 1
|
|
|
|
debconf_get() {
|
|
[ -x /usr/bin/debconf-communicate ] || return
|
|
printf 'GET %s\n' "$1" | /usr/bin/debconf-communicate 2>/dev/null \
|
|
| awk 'NR==1 && $1==0 { $1=""; sub(/^ /,""); print }'
|
|
}
|
|
|
|
has_pkg() { /usr/bin/dpkg-query -W -f='${Status}\n' "$1" 2>/dev/null | grep -q 'ok installed'; }
|
|
exists() { LC_ALL=C /usr/bin/apt-cache policy "$1" 2>/dev/null | awk '/Candidate:/ {print $2}' | grep -qxv '(none)'; }
|
|
|
|
sel="$(debconf_get pkgsel/desktop) $(debconf_get tasksel/first)"
|
|
case "$sel" in
|
|
*triskel*) FLAVOR=kde ;;
|
|
*trisquel-mini*) FLAVOR=lxde ;;
|
|
*trisquel-gnome*) FLAVOR=gnome ;;
|
|
*trisquel-desktop*) FLAVOR=mate ;;
|
|
*) FLAVOR=unknown ;;
|
|
esac
|
|
|
|
if [ "$FLAVOR" = unknown ]; then
|
|
if has_pkg triskel || has_pkg plasma-desktop; then FLAVOR=kde
|
|
elif has_pkg trisquel-mini || has_pkg lxde-core; then FLAVOR=lxde
|
|
elif has_pkg trisquel-gnome || has_pkg gnome-shell; then FLAVOR=gnome
|
|
elif has_pkg trisquel-desktop || has_pkg mate-desktop-environment; then FLAVOR=mate
|
|
else FLAVOR=console
|
|
fi
|
|
fi
|
|
|
|
is_kde=false; [ "$FLAVOR" = kde ] && is_kde=true
|
|
is_gtk=false; echo "$FLAVOR" | grep -Eq '^(mate|gnome|lxde)$' && is_gtk=true
|
|
is_console=false; [ "$FLAVOR" = console ] && is_console=true
|
|
is_desktop=true; $is_console && is_desktop=false
|
|
|
|
emit() {
|
|
p="$1"; [ -n "$p" ] || return
|
|
case "$p" in
|
|
language-pack-gnome-*) $is_gtk || return ;;
|
|
language-pack-kde-*) $is_kde || return ;;
|
|
abrowser-l10n-*|abrowser-locale-*|firefox-locale-*)
|
|
$is_desktop || return ;;
|
|
libreoffice-l10n-*) echo "$FLAVOR" | grep -Eq '^(lxde|console)$' && return ;;
|
|
icedove-locale-*) echo "$FLAVOR" | grep -Eq '^(lxde|console)$' && return ;;
|
|
esac
|
|
exists "$p" && printf '%s\n' "$p"
|
|
}
|
|
|
|
for p in "$@"; do emit "$p"; done
|