Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

file::mimeinfo::applications(3pm) [debian man page]

File::MimeInfo::Applications(3pm)			User Contributed Perl Documentation			 File::MimeInfo::Applications(3pm)

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 "; 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 <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 practise 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 aomething 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 appliction. 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. BUGS
Please mail the author when you encounter any bugs. AUTHOR
Jaap Karssenberg <pardus@cpan.org> 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_2fdesktop_2dfile_2dutils> perl v5.14.2 2012-01-05 File::MimeInfo::Applications(3pm)

Check Out this Related Man Page

File::MimeInfo::Cookbook(3pm)				User Contributed Perl Documentation			     File::MimeInfo::Cookbook(3pm)

NAME
File::MimeInfo::Cookbook - various code snippets DESCRIPTION
Some code snippets for non-basic uses of the File::MimeInfo module: Matching an extension A file does not have to actually exist in order to get a mimetype for it. This means that the following will work: my $extension = '*.txt'; my $mimetype = mimetype( $extension ); Mimetyping an scalar If you want to find the mimetype of a scalar value you need magic mimetyping; after all a scalar doesn't have a filename or inode. What you need to do is to use IO::Scalar : use File::MimeInfo::Magic; use IO::Scalar; my $io_scalar = new IO::Scalar $data; my $mimetype = mimetype( $io_scalar ); In fact most other "IO::" will work as long as they support the "seek()" and "read()" methods. Of course if you want really obscure things to happen you can always write your own IO object and feed it in there. Be aware that when using a filehandle like this you need to set the ":utf8" binmode yourself if apropriate. Mimetyping a filehandle Regrettably for non-seekable filehandles like STDIN simply using an "IO::" object will not work. You will need to buffer enough of the data for a proper mimetyping. For example you could mimetype data from STDIN like this: use File::MimeInfo::Magic; use IO::Scalar; my $data; read(STDIN, $data, $File::MimeInfo::Magic::max_buffer); my $io_scalar = new IO::Scalar $data; my $mimetype = mimetype( $io_scalar ); Be aware that when using a filehandle like this you need to set the ":utf8" binmode yourself if apropriate. Creating a new filename Say you have a temporary file that you want to save with a more proper filename. use File::MimeInfo::Magic qw#mimetype extensions#; use File::Copy; my $tmpfile = '/tmp/foo'; my $mimetype = mimetype($tmpfile); my $extension = extensions($mimetype); my $newfile = 'untitled1'; $newfile .= '.'.$extension if length $extension; move($tmpfile, $newfile); Force the use of a certain database directory Normally you just need to add the dir where your mime database lives to either the XDG_DATA_HOME or XDG_DATA_DIRS environment variables for it to be found. But in some rare cases you may want to by-pass this system all together. Try one of the following: @File::MimeInfo::DIRS = ('/home/me/share/mime'); eval 'use File::MimeInfo'; die if $@; or: use File::MimeInfo; @File::MimeInfo::DIRS = ('/home/me/share/mime'); File::MimeInfo->rehash(); This can also be used for switching between databases at run time while leaving other XDG configuration stuff alone. AUTHOR
Jaap Karssenberg <pardus@cpan.org> 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::MimeInfo perl v5.14.2 2012-01-05 File::MimeInfo::Cookbook(3pm)
Man Page