Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Makes --launcher extract icon and launcher like install scripts do #1145

Merged
merged 1 commit into from
Nov 19, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
51 changes: 17 additions & 34 deletions modules/management.am
Original file line number Diff line number Diff line change
Expand Up @@ -143,41 +143,25 @@ function _icon_theme() {
}

# LAUNCHER
function _launcher_appimage_extract() {
"$arg" --appimage-extract share/icons/*/*/* 1>/dev/null
"$arg" --appimage-extract usr/share/icons/*/*/* 1>/dev/null
"$arg" --appimage-extract share/icons/*/*/*/* 1>/dev/null
"$arg" --appimage-extract usr/share/icons/*/*/*/* 1>/dev/null
"$arg" --appimage-extract *.svg 1>/dev/null
"$arg" --appimage-extract *.png 1>/dev/null
"$arg" --appimage-extract *.desktop 1>/dev/null
"$arg" --appimage-extract share/applications/*.desktop 1>/dev/null
"$arg" --appimage-extract usr/share/applications/*.desktop 1>/dev/null
}

function _launcher_appimage_integration() {
printf "[Desktop Entry]\nVersion=1.0\nType=Application\nTerminal=false\nStartupNotify=true\nExec=%s\n" "$arg %U" > ./"$appimage".desktop
cat ./squashfs-root/*.desktop | grep "^Name=" | head -1 >> ./"$appimage".desktop
cat ./squashfs-root/*.desktop | grep -F '^Name[' >> ./"$appimage".desktop
cat ./squashfs-root/*.desktop | grep "Categories=" >> ./"$appimage".desktop
cat ./squashfs-root/*.desktop | grep "Comment=" | head -1 >> ./"$appimage".desktop
cat ./squashfs-root/*.desktop | grep -F 'Comment[' >> ./"$appimage".desktop
cat ./squashfs-root/*.desktop | grep "Icon=" | head -1 >> ./"$appimage".desktop
cat ./squashfs-root/*.desktop | grep "MimeType=" | head -1 >> ./"$appimage".desktop
uniq ./"$appimage".desktop > ./"$appimage"-1.desktop && mv ./"$appimage"-1.desktop ./"$appimage".desktop
mv ./"$appimage".desktop "$DATADIR"/applications/AppImages/"$appimage".desktop 2>/dev/null
mv ./squashfs-root/*.png "$DATADIR"/icons/ 2>/dev/null
mv ./squashfs-root/*.svg "$DATADIR"/icons/ 2>/dev/null
share_dirs="usr/share share"
size_dirs="0x0 22x22 24x24 32x32 48x48 64x64 128x128 256x256 512x512"
for share in $share_dirs; do
for sizes in $size_dirs; do
mv ./squashfs-root/"${share}"/icons/hicolor/"${sizes}"/apps/*.png "$DATADIR"/icons/ 2>/dev/null
done
mv ./squashfs-root/"${share}"/icons/hicolor/scalable/apps/*.svg "$DATADIR"/icons/ 2>/dev/null
mv ./squashfs-root/"${share}"/pixmaps/*.png "$DATADIR"/icons/ 2>/dev/null
"$arg" --appimage-extract *.desktop 1>/dev/null && mv ./squashfs-root/*.desktop ./"$appimage".desktop
"$arg" --appimage-extract .DirIcon 1>/dev/null && mv ./squashfs-root/.DirIcon ./DirIcon
COUNT=0
while [ "$COUNT" -lt 10 ]; do # Tries to get the actual icon/desktop if it is a symlink to another symlink
if [ -L ./"$appimage".desktop ]; then
LINKPATH="$(readlink ./"$appimage".desktop | sed 's|^\./||' 2>/dev/null)"
"$arg" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" ./"$appimage".desktop
fi
if [ -L ./DirIcon ]; then
LINKPATH="$(readlink ./DirIcon | sed 's|^\./||' 2>/dev/null)"
"$arg" --appimage-extract "$LINKPATH" 1>/dev/null && mv ./squashfs-root/"$LINKPATH" "$DATADIR"/icons/ 1>/dev/null
fi
[ ! -L ./"$appimage".desktop ] && [ ! -L ./DirIcon ] && break
COUNT=$((COUNT + 1))
done
rm -Rf ./squashfs-root
sed -i "s#Exec=[^ ]*#Exec=\"$arg\"#g" ./"$appimage".desktop
mv ./"$appimage".desktop "$DATADIR"/applications/AppImages/"$appimage"-AM.desktop
rm -R -f ./squashfs-root ./DirIcon
}

function _launcher_appimage_bin() {
Expand Down Expand Up @@ -217,7 +201,6 @@ function _launcher(){
chmod a+x "$arg"
cd "$(dirname "$arg")" || return

_launcher_appimage_extract 2>/dev/null
_launcher_appimage_integration 2>/dev/null
_launcher_appimage_bin
fi
Expand Down