Skip to content

Instantly share code, notes, and snippets.

@sandorkazi
Last active April 20, 2024 19:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sandorkazi/87de316909f82aefc0f27f682aa00886 to your computer and use it in GitHub Desktop.
Save sandorkazi/87de316909f82aefc0f27f682aa00886 to your computer and use it in GitHub Desktop.
desktop startup file creator for wine applications
#!/bin/bash
set -e
if [[ "${NONET}" == "" ]]
then
CMDPREFIX=""
else
CMDPREFIX="firejail --net=none "
fi
TARGET="${1}"
if [[ "${TARGET}" == "" ]]
then
echo "Select the file to execute"
TARGET=`zenity --file-selection`
fi
EX=`basename "${TARGET}"`
NAME="${EX//.*/}"
DIR=`dirname "${TARGET}"`
PREFIX=`echo "${DIR}" | sed -e "s/\/drive_c\/.*//"`
HOME=~
FILEPATH="${HOME}/Desktop/${NAME}.desktop"
# --- create .desktop file
if [[ -f "${FILEPATH}" ]]; then
echo "File already exists"
exit 1
else
cat > "${FILEPATH}" <<EOF
[Desktop Entry]
Name=${NAME}
Exec=sh -c 'export WINEPREFIX="${PREFIX}" && cd "${DIR}" && ${CMDPREFIX}wine "${TARGET}"'
Type=Application
StartupNotify=true
Comment="${NAME}"
Path="${TARGET}"
Icon=${NAME}
StartupWMClass="${EX}"
EOF
fi
# --- extract icons
ICONDIR=`mktemp -d`
ICONFILE="${ICONDIR}/${NAME}.ico"
ICONPNG="${ICONDIR}/${NAME}.png"
wrestool -x -t 14 "${TARGET}" > "${ICONFILE}"
convert "${ICONFILE}" "${ICONPNG}"
find "${ICONDIR}" -iname "*.png" | while read png
do
size=`identify "${png}" | sed -E "s/.* PNG ([^ ]*) .*/\1/"`
ICONTARGETDIR="${HOME}/.local/share/icons/hicolor/${size}/apps"
mkdir -p "${ICONTARGETDIR}"
mv "${png}" "${ICONTARGETDIR}/${NAME}.png"
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment