Reusing `Categories` key would be nice, but we would still need `category-defaults.list` for actually choosing the default representant for each category, would not we?

Caching is a good point, we would need to create some mechanism no matter which solution we choose – for instance, if some of the actions were optional, they would probably need to be cached as well.

On Fri, 31 Aug, 2018 at 2:54 PM, PCMan <[email protected]> wrote:
Hi again,
There is another way to make this xdg terminal exec stuff more
standard compliant by reusing XDG menu spec.
https://specifications.freedesktop.org/menu-spec/latest/apas02.html
We can parse all desktop entry files and collect every one with
Category=TerminalEmulator to generate a list of terminal emulators.
This way we don't have to manually maintain a terminal.list file.
Of course parsing all of the *.desktop files is slow so we will need
something like "update-mime-database" to generate the list.

To provide desktop entry files for those apps which are not shipped
with their own, we can install desktop files for them.
set XDG_DATA_DIRS=/usr/share/terminal-emulators:$XDG_DATA_DIRS

And just add our own desktop entry files in
/usr/share/terminal-emulators/*.desktop for those terminals which do
not have desktop entries.
So we don't need to invent another spec to manage the terminals.

Regards

On Fri, Aug 31, 2018 at 8:46 PM PCMan <[email protected]> wrote:

 Hello,
 Just took a look at xdg-terminal-exec and I liked the idea.
Actually I figured out something similar previously but did not write any code. There is, however, one thing I'd like to propose to make the spec more complete.
 Use the Desktop Entry Actions.
https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#extra-actions

 Then, for each desktop entry file of a terminal emulator, we define
 some standard actions:
 * OpenDirInWindow: a command to open a dir in a new tab
 * OpenDirInTab: a command to open a dir in a new tab
 * ExecInWindow: a command to run a program in a new window
 * ExecInTab: a command to run a program in a new tab

 When the "InTab" actions are not defined in the desktop entry file,
 fallback to the "InWindow" version.
This should cover most of the common operations when we need a terminal window.

 For example, we can write xterm.desktop like this
 [Desktop Entry]
 Name=Gnome Terminal
 Exec=gnome-terminal
 Actions=OpenDirInWindow;

 [Desktop Action OpenDirInWindow]
 Name=Open Directory in Terminal
 Exec=gnome-terminal --window --working-directory %f

 [Desktop Action OpenDirInTab]
 Name=Open Directory in Terminal
 Exec=gnome-terminal --tab --working-directory %f

 [Desktop Action ExecInWindow]
 Name=Execute in Terminal
 Exec=gnome-terminal -e %f

In this way, we reuse the existing spec and support various kinds of operations. The only drawback is %f means a file name, but what we need to pass to
 the terminal emulator is actually a full command line with args.

 Just my two cents.

On Thu, Aug 30, 2018 at 3:36 PM Vladimir Kudrya <[email protected]> wrote:
 >
 > Couple of notes.
 >
 > xdg-terminal-exec in its current form is a minimum intervention
> solution: you need to place desktop files for some terminals, then use
 > xdg-terminal-exec itself as a command to launch terminal.
 >
> ArgPrefix has a solid generic use case: there was a bug in Ocrfeeder:
 > https://bugzilla.gnome.org/show_bug.cgi?id=767732 It required an
> argument to open file, but no argument to just launch the app. Current
 > desktop entry spec can not handle this via single desktop entry.
 >
 >
> I'll try to sum up, simplify, and build upon Jan's and Ian's proposals.
 >
 > Fields for destop entries:
 > MimeType: what app can open
 > MimeTypeView: what app can open for viewing
 > MimeTypeEdit: what app can open for edit
 > Intent: what actions app represents (analogous to MimeType, like:
 > x-intent/terminal, x-intent/increase-brightness.) Choosing goes
 > alongside mimetypes and schemes into mimeapps.list hierarchy.
> ArgPrefix: argument(s) to be added to the beginning of command line if
 > there are other arguments provided.
 >
 > With all above:
 > xdg-open some.file: current behavior
 > xdg-open --edit some.file: uses MimeTypeEdit choices.
 > xdg-open --view some.file: uses MimeTypeView choices.
 > xdg-intent terminal: opens terminal.
> xdg-intent termianl foo --bar: runs foo --bar in chosen terminal, using > ArgPrefix if needed. IMHO one of the few intents that would ever require
 > arguments.
 >
 > This strategy is backward-compatible, uses same data and config
> hierarchies, works without dbus (I don't want to touch it even with ten > meter stick), 'xdg-intent terminal' can be used as drop in for terminal
 > emulators. (xdg-terminal as wrapper to get rid of that space?).
 > _______________________________________________
 > xdg mailing list
 > [email protected]
 > https://lists.freedesktop.org/mailman/listinfo/xdg
_______________________________________________
xdg mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/xdg

_______________________________________________
xdg mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/xdg

Reply via email to