59 lines
1.7 KiB
Bash
Executable File
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"
|