Re: A spec to set default terminal applications?
Jan Tojnar <[email protected]>
| Newsgroups | gmane.linux.xdg.devel |
|---|---|
| Message-ID | <[email protected]> |
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