So ZQ
comes from the sound of a fly being swatted?
tomatoely
It's fixed now! At first I researched a little more and found about the desktop-file-validate
cli utility from the desktop-file-utils
package, and it did tell me a lot about the syntax errors I was making with the exec command.
But as you wisely suggested, dealing with those escaping rules was a bit too bothersome for my use case, so I ended going the bash script route which worked flawlessly at last! So thank you for pointing that out!
Here's the final .desktop file for anyone interested:
[Desktop Entry]
Type=Service
MimeType=image/png;image/jpg;image/jpeg;image/ico;image/heic;image/svg+xml;image/webp;
Actions=topng;tojpg;toico;towebp
X-KDE-Submenu=Convert Image Format
Icon=viewimage
[Desktop Action topng]
Name=To Png
Exec=/home/myuser/.local/share/kio/servicemenus/scripts/convert-image.sh %f png
Icon=viewimage
[Desktop Action tojpg]
Name=To Jpg
Exec=/home/myuser/.local/share/kio/servicemenus/scripts/convert-image.sh %f jpg
Icon=viewimage
[Desktop Action toico]
Name=To Ico
Exec=/home/myuser/.local/share/kio/servicemenus/scripts/convert-image.sh %f ico
Icon=viewimage
[Desktop Action towebp]
Name=To Webp
Exec=/home/myuser/.local/share/kio/servicemenus/scripts/convert-image.sh %f webp
Icon=viewimage
and the bash script coupled with it:
#!/bin/bash
FILE="${1}"
FORMAT="${2}"
# Check if magick is installed
if ! command -v magick &> /dev/null; then
echo "Error: magick command not found. Please install ImageMagick."
exit 1
fi
# Check if FILE exists
if [[ ! -f "$FILE" ]]; then
echo "File not found: $FILE"
exit 1
fi
DIRECTORY=$(dirname "$FILE")
# Get the file name by looking for the longest match starting from the beginning of the string up to the last dot.
FILENAME=$(basename "$FILE" .${FILE##*.})
# Convert the file format using magick
magick "$FILE" -format "$FORMAT" "$DIRECTORY/$FILENAME.$FORMAT"
If I understood correctly, I made the changes as you said like this:
Exec=sh -c "FILE=\"%f\"; DIRECTORY=\"$(dirname \"$FILE\")\"; FILENAME=\"${FILE%.*}\"; magick \"$FILE\" -format png \"$DIRECTORY/$FILENAME.png\""
Now when I click on the service menu option this error popup appears:
Syntax error in command sh -c "FILE=%f; DIRECTORY=$(dirname $FILE); FILENAME=${FILE%.*}; magick $FILE\ -format png $DIRECTORY/$FILENAME.png" coming from
It seems escaping the double quotes doesn't actually escape the backlash with it?
I then tried escaping those new backlashes like this
Exec=sh -c "FILE=\\"%f\\"; DIRECTORY=\\"$(dirname \\"$FILE\\")\\"; FILENAME=\\"${FILE%.*}\\"; magick \\"$FILE\\" -format png \\"$DIRECTORY/$FILENAME.png\\""
and now Dolphin doesnt complain about syntax, but the new converted image doesn't get made :(
For anyone wanting to relive the minecraft 7th gen console experience on PC, I suggest you give the Legacy4J mod a try, specially with the Re-Console Modpack. I had lots of fun revisiting the old tutorial worlds
Isn't that what openGL and vulkan aim for?