NAME¶
File::MimeInfo::Applications - Find programs to open a file by mimetype
SYNOPSIS¶
use File::MimeInfo::Magic;
use File::MimeInfo::Applications;
my $file = '/foo/bar';
my $mimetype = mimetype($file)
|| die "Could not find mimetype for $file\n";
my ($default, @other) = mime_applications($mimetype);
if (defined $default) {
$default->system($file)
}
else {
# prompt user with choice from @others
# ...
}
DESCRIPTION¶
This module tries to find applications that can open files with a certain
mimetype. This is done in the way suggested by the freedesktop Desktop Entry
specification. This module is intended to be compatible with file managers and
other applications that implement this specification.
This module depends on File::DesktopEntry being installed.
To use this module effectively you need to have the desktop-file-utils package
from freedesktop and run update-desktop-database after installing new .desktop
files. See
<
http://www.freedesktop.org/wiki/Software/desktop-file-utils>.
At the moment of writing this module is compatible with the way Nautilus (Gnome)
and with Thunar (XFCE) handle applications for mimetypes. I understand KDE is
still working on implementing the freedesktop mime specifications but will
follow. At the very least all perl applications using this module are using
the same defaults.
EXPORT¶
All methods are exported by default.
METHODS¶
- "mime_applications(MIMETYPE)"
- Returns an array of File::DesktopEntry objects. The first is the default
application for this mimetype, the rest are applications that say they can
handle this mimetype.
If the first result is undefined there is no default application and it is
good practice to ask the user which application he wants to use.
- "mime_applications_all(MIMETYPE)"
- Like "mime_applications()" but also takes into account
applications that can open mimetypes from which MIMETYPE inherits. Parent
mimetypes tell something about the data format, all code inherits from
text/plain for example.
- "mime_applications_set_default(MIMETYPE, APPLICATION)"
- Save a default application for this mimetype. This action will affect
other applications using the same mechanism to find a default application.
APPLICATION can either be a File::DesktopEntry object or the basename of a
.desktop file.
- "mime_applications_set_custom(MIMETYPE, COMMAND)"
- Save a custom shell command as default application. Generates a
DesktopEntry file on the fly and calls
"mime_applications_set_custom". Returns the DesktopEntry object.
No checks are done at all on COMMAND. It should however contain at least one
word.
NOTES¶
At present the file with defaults is
$XDG_DATA_HOME/applications/defaults.list. This file is
not specified in any freedesktop spec and if it gets standardized it should
probably be located in $XDG_CONFIG_HOME. For this module I tried to implement
the status quo.
AUTHOR¶
Jaap Karssenberg <pardus@cpan.org> Maintained by Michiel Beijen
<michiel.beijen@gmail.com>
COPYRIGHT¶
Copyright (c) 2005, 2012 Jaap G Karssenberg. All rights reserved. This program
is free software; you can redistribute it and/or modify it under the same
terms as Perl itself.
SEE ALSO¶
File::DesktopEntry, File::MimeInfo, File::MimeInfo::Magic, File::BaseDir
<
http://freedesktop.org/wiki/Software/desktop-file-utils/>