A few questions about escaping in desktop files

meator meator.dev at gmail.com
Mon Aug 22 07:41:45 UTC 2022


Hello. I'm reading the latest Desktop Entry Specification and I have 
some questions.
If I understand it correctly, there are three phases of parsing a Exec 
key: the base escaping which is done for string, localestring, 
iconstring and therefore for Exec, Exec quoting and then field code 
expansion.

I've noticed that a lot of the special characters in the second phase 
have something to do with the shell. Is shell supposed to be involved in 
the execution of the program? I'm currently executing it directly (I'm 
not doing sh -c <args>). If there isn't a shell involved, why are there 
so many restricted characters? They look pretty useless.

The rule says that the argument containing one or more restricted 
characters shall be enclosed in double quotes and the characters 
matching regex ["`$\\] shall be escaped with \.
So when I have

Exec=true $test > 1

It should be quoted as

Exec=true "\\$test" ">" 1

And the program would receive three arguments (argc = 4), "$test", ">" 
and "1" or JHRlc3Q=, Pg==, MQ== in base64 (I'm including the base64 
encoded string because it is unambiguous). Is this correct?

 > Arguments are separated by a space.

A literal space ' ' 0x20? For example the shell uses $IFS which allows a 
space, a tab and a newline as separators.

So

Exec=true a\nb

would mean that the 'true' program would receive a single argument (i.e. 
argc = 2). The "\n" would be replaced with a newline in the first phase 
of parsing and the program would receive "a<newline>b" as the first 
argument or YQpi in base64. Is this correct?

Let's say I would like to pass a literal "\n" (XG4=) to the program.

Exec=echo \\\\n

Is this correct?

 > Arguments may be quoted in whole.

What does this mean?

How many arguments of echo would

Exec=echo prefix%isuffix

produce? 2 or 4?

Thanks in advance,
meator
-------------- next part --------------
A non-text attachment was scrubbed...
Name: OpenPGP_signature
Type: application/pgp-signature
Size: 659 bytes
Desc: OpenPGP digital signature
URL: <https://lists.freedesktop.org/archives/xdg/attachments/20220822/724fac12/attachment.sig>


More information about the xdg mailing list