A spec to set default terminal applications?

Jan Tojnar jtojnar at gmail.com
Wed Aug 29 22:13:06 UTC 2018


Relying on `Implements=` key should work, though I think the 
`ArgPrefix` should be part of the desktop file itself – it will be 
static and defined by the vendor. Also for the system to be efficient, 
DEs would want to add something like PCMan’s cache mentioned in the 
intents mail.

However, since `Implements=` is supposed to contain D-Bus interfaces 
[1], I would like to propose an alternative solution. We could define 
`org.freedesktop.TerminalEmulator` interface containing `Execute` 
method. This could be modelled after `org.freedesktop.Application` from 
D-Bus Activation section of desktop-entry-spec [2].

Similarly, there would be `org.freedesktop.Editor` interface containing 
`Edit` method, representing *Edit* intent, dual to the 
`org.freedesktop.Application`’s `Open` method, which would be 
interpreted as default *View* intent.

This would require modification of the programs but would offer a 
standard replacement to fiddling with the CLI flags. Since modern 
applications already should be D-Bus-activatable, it should be fairly 
simple addition (and most of the code would be handled by GLib or Qt 
anyway).

[1]: 
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.2.html#interfaces
[2]: 
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-1.2.html#dbus

> 

On Wed, 29 Aug, 2018 at 11:41 PM, Ian Huang <imyxhuang at gmail.com> wrote:
> Huh, good find. I was about to type up an email about how the 
> "Implements=" key
> that was added after that proposal is kind of useless in our case; as 
> it says,
> "it is entirely up to the entity who defined a particular interface 
> to define
> what it means to implement it." But then I realized that we can 
> actually use it
> quite easily in addition to the proposed xdg-terminal-exec or 
> xdg-intent-exec
> spec to avoid the need for duplicate desktop files for intent 
> handlers.
> 
> It could work like this:
> 1. The X-ExecArg option (or X-ArgPrefix) in the proposed spec is 
> moved from the
>    "data" directories with desktop files to part of the .list 
> "config" files;
> 2. the concept of "data" directories (the ones full of .desktop 
> files) can be
>    left out;
> 3. terminals and other applications that open intents are instructed 
> to have
>    certain values in the Implements key, for example 
> "Implements=xdg-intent-
>    terminal" or "Implements=xdg-intent-calculator";
> 4. when we scan through the .list config files, instead of running 
> the matching
>    app in the data directories, we check that the matching .desktop 
> file in the
>    usual place (/usr/share/applications/ or 
> ~/.local/share/applications or
>    whatever) has the correct intent named in the Implements= key;
> 5. we just run that desktop file with the ArgPrefix specified in the 
> .list.
> 
> It's only a little cleaner, though. Thoughts?



More information about the xdg mailing list