bazzite/system_files/desktop/shared/usr/bin/bazzite-flatpak-manager
2024-01-24 14:14:34 -08:00

123 lines
3.7 KiB
Bash
Executable File

#!/usr/bin/bash
# SCRIPT VERSION
VER=17
VER_FILE="/etc/bazzite/flatpak_manager_version"
VER_RAN=$(cat $VER_FILE)
IMAGE_INFO="/usr/share/ublue-os/image-info.json"
IMAGE_FLAVOR=$(jq -r '."image-flavor"' < $IMAGE_INFO)
BASE_IMAGE_NAME=$(jq -r '."base-image-name"' < $IMAGE_INFO)
# IMAGE IDENTIFIERS
KNOWN_IMAGE_FLAVOR_FILE="/etc/bazzite/flatpak_manager_image_flavor"
KNOWN_IMAGE_FLAVOR=$(cat $KNOWN_IMAGE_FLAVOR_FILE)
# Run script if updated
if [[ -f $VER_FILE && $VER = $VER_RAN ]]; then
if [[ -f $KNOWN_IMAGE_FLAVOR_FILE ]]; then
if [[ $IMAGE_FLAVOR = $KNOWN_IMAGE_FLAVOR ]]; then
echo "Flatpak manager v$VER has already ran. Exiting..."
exit 0
fi
fi
fi
# Opt out of and remove Fedora's flatpak repo
if grep -qz 'fedora' <<< $(flatpak remotes); then
/usr/lib/fedora-third-party/fedora-third-party-opt-out
/usr/bin/fedora-third-party disable
flatpak remote-delete fedora --force
fi
# Ensure Flathub is enabled
flatpak remote-modify --system --enable flathub
# Installed flatpaks
FLATPAK_LIST=$(flatpak list --columns=application)
# Flatpak list files
INSTALL_LIST_FILE="/usr/share/ublue-os/bazzite/flatpak/install"
REMOVE_LIST_FILE="/usr/share/ublue-os/bazzite/flatpak/remove"
# Configure needed params for flatpaks
if [[ $BASE_IMAGE_NAME =~ "kinoite" ]]; then
# GTK4 theme for KDE
flatpak override \
--filesystem=xdg-config/gtk-4.0:ro
fi
# Wayland and XInput for Firefox
flatpak override \
--system \
--env=MOZ_ENABLE_WAYLAND=1 \
--env=MOZ_USE_XINPUT2=1 \
org.mozilla.firefox
# Fix printing on LibreOffice
flatpak override \
--system \
--socket=cups \
--socket=session-bus \
org.libreoffice.LibreOffice
# Allow MangoHUD config for Flatpaks
flatpak override \
--filesystem=xdg-config/Mangohud:ro \
--filesystem=xdg-config/vkBasalt:ro
# Params needed for HW accelerated video on Nvidia (Ignoring hybrid systems)
if [[ $IMAGE_FLAVOR =~ "nvidia" ]] && [ $(grep -o "\-display" <<< $(lshw -C display) | wc -l) -le 1 ] && grep -q "vendor: NVIDIA Corporation" <<< $(lshw -C display); then
flatpak override \
--system \
--filesystem=host-os \
--env=LIBVA_DRIVER_NAME=nvidia \
--env=LIBVA_DRIVERS_PATH=/run/host/usr/lib64/dri \
--env=LIBVA_MESSAGING_LEVEL=1 \
--env=MOZ_DISABLE_RDD_SANDBOX=1 \
--env=NVD_BACKEND=direct \
org.mozilla.firefox
else
# Undo if user was previously using a Nvidia image and is no longer
flatpak override \
--system \
--nofilesystem=host-os \
--unset-env=LIBVA_DRIVER_NAME \
--unset-env=LIBVA_DRIVERS_PATH \
--unset-env=LIBVA_MESSAGING_LEVEL \
--unset-env=MOZ_DISABLE_RDD_SANDBOX \
--unset-env=NVD_BACKEND \
org.mozilla.firefox
fi
# Set up Firefox default configuration
mkdir -p /var/lib/flatpak/extension/org.mozilla.firefox.systemconfig/x86_64/stable/defaults/pref
rm -f /var/lib/flatpak/extension/org.mozilla.firefox.systemconfig/x86_64/stable/defaults/pref/*bazzite*.js
/usr/bin/cp -rf /usr/share/ublue-os/firefox-config/* /var/lib/flatpak/extension/org.mozilla.firefox.systemconfig/x86_64/stable/defaults/pref/
# Install flatpaks in list
if [[ -f $INSTALL_LIST_FILE ]]; then
if [[ -n $FLATPAK_LIST ]]; then
INSTALL_LIST=$(echo $FLATPAK_LIST | grep -vf - $INSTALL_LIST_FILE)
else
INSTALL_LIST=$(cat $INSTALL_LIST_FILE)
fi
if [[ -n $INSTALL_LIST ]]; then
if ! flatpak install --system --noninteractive flathub ${INSTALL_LIST[@]}; then
# exit on error
exit 1
fi
fi
fi
# Remove flatpaks in list once
if [[ ! -f $VER_FILE && -f $REMOVE_LIST_FILE ]]; then
REMOVE_LIST=$(echo $FLATPAK_LIST | grep -f - $REMOVE_LIST_FILE)
if [[ -n $REMOVE_LIST ]]; then
flatpak remove --system --noninteractive ${REMOVE_LIST[@]}
fi
fi
mkdir -p /etc/bazzite
echo $VER > $VER_FILE
echo $IMAGE_FLAVOR > $KNOWN_IMAGE_FLAVOR_FILE