this may not be strictly about programming, but if I find no ready-made solution it may become a programming task: On UNIX, what is a command-line method for determining the user-preferred application for a given filetype?
My ideal solution here would be a command that stopped me having to do the following:
okular foo.pdf
And allowed me to do something like this, working with my set preferred applications:
launch foo.pdf
I found no answer by searching, and a DIY approach wouldn't work as, while I've been using Linux for a while, I have no clue of the internals that manage my preferred applications.
On unix per se that would be the one the user used to open it, because there is no OS level notion of a preferred application.
However the major X desktop environment all define such a notion, and then you have to use their facilities:
gnome-open
in GNOME (duh)exo-open
in XFCE [see the comments in the gnome link]xdg-open
may work in many environments (reputedly works in KDE) [see the comments in the gnome link]- just plain
kfmclient exec
(orkfmclient4 exec
) in KDE (I haven't been able to find a reference tokde-open
as Rob H suggests, and don't have a KDE system at hand to try it)
Now Mac OS X provides the open
command which works like clicking the file in the finder (which is to say, it asks the OS...)
Several corrections thanks to ephemient in the comments. I won't discuss mailcap
, because I never understood it and had forgotten it existed...
The answer differs depending on the desktop environment your using. Since you mentioned Okular, I'm going to assume you're using KDE. So try:
kde-open <file>
For GNOME, there is the equivalent:
gnome-open <file>
To answer this myself, I've defined a simple (bash) function that works in the way I expect:
function show {
xdg-open $1 &> NUL
}
xdg-open was almost exactly what I wanted, but it lets ugly program warnings slip through into the shell, which the above seems to fix.
Thanks all.
来源:https://stackoverflow.com/questions/1949531/finding-the-preferred-application-for-a-given-file-extension-via-unix-shell-comm