On 6/19/19 10:20 AM, Jeremy Sowden wrote:
On 2019-06-18, at 12:26:19 +0200, E. Serradilla wrote:
Package: wmaker
Version: 0.95.8-3

automatically generated menus prevent some applications from running,
e.g. libreoffice will not run complaining that file "%U does not
exist" and others will open an empty file, e.g. %F.

Looking at the code the XDG menu parser does not strip "%X" arguments
from Exec entries, I attached a sample patch as a workaround to this
problem.

Your patch truncates any string value at the first %.  I don't think
that's the right way to go.


yes this is only a workaround to the problem, but without it the current
generated menus do not work well in most of the cases


The comments at the top of the source file read as follows:

   * We will only deal with Type == "Application" entries in [Desktop
   * Entry] groups. Since there is no passing of file name arguments or
   * anything of the sort to applications from the menu, execname is
   * determined as follows:
   * - If `TryExec' is present, use that;
   * - else use `Exec' with any switches stripped

Clearly this is not what the code actually does.  The quick hack would
be to change xdg_to_wm() to truncate the command-line at the first
instance of white-space (which is what is done to derive (*wm)->Name
from (*xdg)->Exec or (*xdg)->TryExec); the right thing to do would be to
implement the FDO quoting rules first:

   
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.1.html#exec-variables

Doesn't look too hard.  I'll put something together.

J.


that would be very good, however you need to take into account that some
applications need some arguments at the command-line to run e.g. in my
/usr/share/applications/libreoffice-writer.desktop I have the following
entry

Exec=libreoffice --writer %U

that's why I truncated the command at the first % and remove the
trailing whitespace to have

libreoffice --writer

truncating at the first whitespace would have not worked...

Reply via email to