lsfg-vk/flatpak-enabler.sh
2025-07-20 11:46:02 -03:00

67 lines
3.6 KiB
Bash
Executable file

#!/bin/bash
# set up function
flatpak_enabler () {
# initialize variables with locations
DLL_FIND=$(find $HOME -name Lossless.dll | head -n 1)
DLL_ABSOLUTE_PATH=$(dirname "$(realpath "$DLL_FIND")")
ESCAPED_DLL_PATH=$(printf '%s\n' "$DLL_ABSOLUTE_PATH" | sed 's/[&/\]/\\&/g')
CONF_LOC="${HOME}/.config/lsfg-vk/conf.toml"
# check if config exists, and if not, gets a model file
if [ ! -f "$CONF_LOC" ]; then
# make sure target dir exists
mkdir -p ${HOME}/.config/lsfg-vk/
wget https://raw.githubusercontent.com/PancakeTAS/lsfg-vk/refs/heads/develop/conf.toml
mv conf.toml ${HOME}/.config/lsfg-vk/
fi
# register dll location in config file
sed -i -E "s|^# dll = \".*\"|dll = \"$ESCAPED_DLL_PATH\"|" ${HOME}/.config/lsfg-vk/conf.toml
# apply flatpak overrides -- Lutris has permission for /home, so won't need any, but still needs the symlinks
_flatpaks=(com.heroicgameslauncher.hgl com.valvesoftware.Steam net.lutris.Lutris)
for flat in "${_flatpaks[@]}"; do
if flatpak list | grep -q "$flat"; then
APP_DIR="$HOME/.var/app/$flat"
# overrides for AUR/CachyOS packages
if pacman -Qi lsfg-vk 2>/dev/null 1>&2; then
flatpak override \
--user \
--filesystem="/usr/lib/liblsfg-vk.so:ro" \
--filesystem="/etc/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json:ro" \
--filesystem="xdg-config/lsfg-vk:ro" \
--filesystem="$DLL_ABSOLUTE_PATH:ro" \
"$flat"
# overrides for install script
elif [ -f "$HOME/.local/lib/liblsfg-vk.so" ] && [ -f "$HOME/.local/share/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json" ]; then
flatpak override \
--user \
--filesystem="$HOME/.local/lib/liblsfg-vk.so:ro" \
--filesystem="xdg-data/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json:ro" \
--filesystem="xdg-config/lsfg-vk:ro" \
--filesystem="$DLL_ABSOLUTE_PATH:ro" \
"$flat"
fi
# set up directories for symlinks
mkdir -p "$APP_DIR/lib"
mkdir -p "$APP_DIR/config/vulkan/implicit_layer.d/"
mkdir -p "$APP_DIR/.config/lsfg-vk/"
# symlinks for AUR/CachyOS packages
if pacman -Qi lsfg-vk 2>/dev/null 1>&2; then
ln -sf "/usr/lib/liblsfg-vk.so" "$APP_DIR/lib/liblsfg-vk.so"
ln -sf "/etc/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json" "$APP_DIR/config/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json"
ln -sf "$HOME/.config/lsfg-vk/conf.toml" "$APP_DIR/.config/lsfg-vk/conf.toml"
# symlinks for installation script -- elif so it only creates the symlinks if files exist at the expected locations
elif [ -f "$HOME/.local/lib/liblsfg-vk.so" ] && [ -f "$HOME/.local/share/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json" ]; then
ln -sf "$HOME/.local/lib/liblsfg-vk.so" "$APP_DIR/lib/liblsfg-vk.so"
ln -sf "$HOME/.local/share/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json" "$APP_DIR/config/vulkan/implicit_layer.d/VkLayer_LS_frame_generation.json"
ln -sf "$HOME/.config/lsfg-vk/conf.toml" "$APP_DIR/.config/lsfg-vk/conf.toml"
fi
echo "Usage enabled successfully for $flat."
fi
done
}
# run function only if flatpak is present
if command -v flatpak &> /dev/null; then
flatpak_enabler
fi