man File::MimeInfo::Applications () - Find programs to open a file by mimetype

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://freedesktop.org/wiki/Software_2fdesktop_2dfile_2dutils>.

At the moment of writing this module is compatible with the way nautilus (Gnome) handles mimetypes and with thunar. 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

This module exports the methods CWmime_applications() and CWmime_applications_set_default().

METHODS

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 practise to ask the user which application he wants to use. Save a default application for this mimetype. This action will affect other applications using the same mechanism to find a default appliction. APPLICATION can either be a File::DesktopEntry object or the basename of a .desktop file.

NOTES

At present the file with defaults is $XDG_DATA_HOME/applications/defaults.list. This file is not specified in any spec and if it gets standardized it should probably be located in CW$XDG_CONFIG_HOME. For this module I tried to implement the status quo.

If you *really* want to open a file and you have no application for it you could try all parent mimetype classes for the mimetype you got. See File::MimeInfo to get these parent classes.

BUGS

Please mail the author when you encounter any bugs.

AUTHOR

Jaap Karssenberg || Pardus [Larus] <pardus@cpan.org>

Copyright (c) 2005 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_2fdesktop_2dfile_2dutils>