Mein
flatpak.plugin.sh
sieht wie folgt aus:
#! bash oh-my-bash.module
if _omb_util_command_exists flatpak
then
__flatpak_install () {
local __flat_apps
mapfile -t __flat_apps < <(flatpak list --columns=application --user --app)
for __a in "${OMB_FLATPAK_APPS[@]}"
do
if ! [[ ${__flat_apps[*]} =~ ${__a} ]]
then
if ! flatpak install --user flathub -y "${__a}"
then
echo "flatpak could not install application \"${__a}\"." >&2
fi
fi
done
}
( ( flock -n 9 || exit
__flatpak_install
) 9>> /tmp/__flatpak_install_LOCK &
)
mapfile -t __flat_commands < <(flatpak list --columns=name,application --user --app)
for __l in "${__flat_commands[@]}"
do
__alias_name="$(cut -f 1 <<<"${__l}" | sed 's/ /_/g')"
__alias_command="$(cut -f 2 <<<"${__l}")"
eval "alias ${__alias_name}=\"flatpak run ${__alias_command}\""
done
unset __flat_commands __l __a __alias_name __alias_command
upd_flatpak() {
if tty -s
then
# Update flatpak packages. Run only one at a time.
flock -n -E 0 "${BASH_SOURCE[0]}" flatpak update --noninteractive
fi
}
else
echo 'flatpak not found, plugin not activated.' >&2
fi
Damit kann ich meiner .bashrc das array "OMB_FLATPAK_APPS" definieren, in dem alle meine flatpak apps aufgeführt sind:
OMB_FLATPAK_APPS=(
cc.arduino.IDE2 # Arduino IDE v2
org.freecadweb.FreeCAD # FreeCAD
org.fritzing.Fritzing # Fritzing
)
Beim login wird sichergestellt, dass alle Pakete installiert sind.
Zum anderen habe ich an der Kommandozeile zum einen den Befehl "upd_flatpak" zur Verfügung, der ein Update aller Pakete durchführt und für jede installierte app gibt es noch ein alias zum Starten:
> alias |grep flatpak
alias Arduino_IDE_v2='flatpak run cc.arduino.IDE2'
alias FreeCAD='flatpak run org.freecadweb.FreeCAD'
alias Fritzing='flatpak run org.fritzing.Fritzing'
alias HeiseArchiv='flatpak run de.heise.app.HeiseArchiv'