A spec to set default terminal applications?
Jan Tojnar
jtojnar at gmail.com
Fri Aug 31 13:35:04 UTC 2018
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 <pcman.tw at gmail.com> 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 <pcman.tw at gmail.com> 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
>> <vladimir-csp at yandex.ru> 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
>> > xdg at lists.freedesktop.org
>> > https://lists.freedesktop.org/mailman/listinfo/xdg
> _______________________________________________
> xdg mailing list
> xdg at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/xdg
More information about the xdg
mailing list