unshare-helper/app/cmd/app-export

59 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
FULL_PREFIX="$(realpath -s "$1")"
HASH_PREFIX=($(echo "$FULL_PREFIX" | md5sum))
DESKTOP_FILE="$1/$2"
if ! [ -f "$DESKTOP_FILE" ]; then
if [ -f "$1/$HOME/.local/share/applications/$2.desktop" ]; then
DESKTOP_FILE="$1/$HOME/.local/share/applications/$2.desktop"
elif [ -f "$1/usr/local/share/applications/$2.desktop" ]; then
DESKTOP_FILE="$1/usr/local/share/applications/$2.desktop"
elif [ -f "$1/usr/share/applications/$2.desktop" ]; then
DESKTOP_FILE="$1/usr/share/applications/$2.desktop"
fi
fi
OUTPUT="$HOME/.local/share/applications/$HASH_PREFIX-$(basename "$DESKTOP_FILE")"
if [ -f "$OUTPUT" ]; then
rm "$OUTPUT"
fi
while IFS="" read -r p || [ -n "$p" ]
do
USELINE=1
if ! [ "$3" = "" ] && [[ "$p" == "Name="* ]] || [[ "$p" == "Name["*"]="* ]] || [[ "$p" == "GenericName="* ]] || [[ "$p" == "GenericName["*"]="* ]] || [[ "$p" == "X-GNOME-FullName="* ]] || [[ "$p" == "X-GNOME-FullName["*"]="* ]]; then
p="$p [$3]"
fi
if [[ "$p" == "Exec="* ]]; then
p="${p/=/=\"$UNSHH_DIR/app\" prefix-start \"$FULL_PREFIX\" }"
fi
shopt -s nullglob
if [[ "$p" == "Icon="* ]]; then
ICON="${p/Icon=/}"
for ICON_FILE in "$1/usr/share/icons/"*"/"*"/"*"/$ICON."*; do
NEW_ICON_FILE="${ICON_FILE/$1\/usr\/share\/icons\//}"
NEW_ICON_FILE="$(echo "$NEW_ICON_FILE" | sed 's/[^\/]*\///')"
NEW_ICON_DIR="$HOME/.icons/hicolor/$(dirname "$NEW_ICON_FILE")"
NEW_ICON_FILE="$NEW_ICON_DIR/$HASH_PREFIX-$(basename "$NEW_ICON_FILE")"
mkdir -p "$NEW_ICON_DIR"
cp "$ICON_FILE" "$NEW_ICON_FILE"
done
p="Icon=$HASH_PREFIX-$ICON"
fi
shopt -u nullglob
if [[ "$p" == "TryExec="* ]]; then
USELINE=0
fi
if [ "$USELINE" = "1" ]; then
echo "$p" >> "$OUTPUT"
fi
done < "$DESKTOP_FILE"
chmod +x "$OUTPUT"