Re: Syntax regarding "Exec" instruction in .desktop files
On Mon, Jun 01, 2020 at 03:12:03PM +0200, email@example.com wrote:
> "Arguments may be quoted in whole. If an argument contains a reserved character the argument must be quoted. The rules for quoting of arguments is also applicable to the executable name or path of the executable program as provided.
> Quoting must be done by enclosing the argument between double quotes and escaping the double quote character, [...]
OK so far.
> Let's take an example, here is my fusuma.desktop file:[Desktop Entry]
> Exec=sh -c 'if which ruby >/dev/null && which gem >/dev/null; then $(ruby -r rubygems -e "puts Gem.user_dir")/bin/fusuma -d; fi'
You have not followed the allowed syntax. You have an argument which
needs quoting, but you have not enclosed it in double-quotes. Nor have
you escaped the characters within it that need escaping.
I would not even *attempt* to do what you are trying to do here. Your
life would become enormously simpler if you would just put this shell
script inside a file, and Exec it as a script.
Attempting to in-line a shell script inside an Exec= line is madness.