File::MimeInfo::Applications - Find programs to open a file by mimetype |
File::MimeInfo::Applications - Find programs to open a file by mimetype
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 # ... }
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 the File::DesktopEntry manpage 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.
All methods are exported by default.
mime_applications(MIMETYPE)
If the first result is undefined there is no default application and it is good practise to ask the user which application he wants to use.
mime_applications_all(MIMETYPE)
mime_applications()
but also takes into account applications that
can open mimetypes from which MIMETYPE inherits. Parent mimetypes tell
aomething about the data format, all code inherits from text/plain for example.
mime_applications_set_default(MIMETYPE, APPLICATION)
APPLICATION can either be a File::DesktopEntry object or the basename of a .desktop file.
mime_applications_set_custom(MIMETYPE, COMMAND)
mime_applications_set_custom
.
Returns the DesktopEntry object.
No checks are done at all on COMMAND. It should however contain at least one word.
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.
Please mail the author when you encounter any bugs.
Jaap Karssenberg || Pardus [Larus] <pardus@cpan.org>
Copyright (c) 2005,2008 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.
the File::DesktopEntry manpage, the File::MimeInfo manpage, the File::MimeInfo::Magic manpage, the File::BaseDir manpage
http://freedesktop.org/wiki/Software_2fdesktop_2dfile_2dutils
File::MimeInfo::Applications - Find programs to open a file by mimetype |