[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Syntax regarding "Exec" instruction in .desktop files

On Mon, Jun 01, 2020 at 03:12:03PM +0200, l0f4r0@tuta.io 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]
> Type=Application
> Name=fusuma
> 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.

Reply to: