HomePage > ComponentHowTo Components and HowTos > FileTypes

How To Add MIME-Types

MIME-types define different file types allowing the operating system to deal with them correctly. Many generic file types are already defined in Puppy such as Jpegs and Mp3s. These are defined by XML description files in the FreeDesktopOrg freedesktop.org's package SharedMimeInfo shared-mime-info. If a program only a generic filetype rather than a specific format there is no need to add a MIME-type - instead AssociateFiles associate existing MIME-type to that program.

Add new MIME-Type - method one - update-mime-database
1. This method cannot be used in standard Puppy. It requires XML description files and command update-mime-database. These are often provided by loading the appropriate devx devx sfs.


Caution: running update-mime-database without the XML descriptions will remove most of your MIME-types stored in globs, globs2 etc. To add a MIME-type without needing add all descriptions see below.


2. Provide extra MIME-type information to add in an XML description file located at /usr/share/mime/packages/


For example this is Audacity Audacity's, /usr/share/mime/packages/audacity.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
  <mime-type type="application/x-audacity-project">
    <sub-class-of type="text/xml"/>
    <comment>Audacity project</comment>
    <glob pattern="*.aup"/>
  </mime-type>
</mime-info>



3. This information is then added to various files in using the command update-mime-database /usr/share/mime (files updated include globs, globs2, magic, subclasses, aliases, icons, generic-icons, XMLnamespaces and mime.cache).


Note in standard Puppy as the XML descriptions in /usr/share/mime/... and the command update-mime-database have been removed - this saves about 2.5Mb of space.

Add new MIME-Type - method two - append mime files
This method works without loading the devx devx sfs.


All ROXFiler ROX needs is an extra line adding to various files in /usr/share/mime (minimally just globs). The echo and >> commands can do this. For example, observing update-mime-database on audacity.xml the equilavent code is:


#add mime-type (without using update-mime-database)
echo application/x-audacity-project:*.aup >> /usr/share/mime/globs
echo 50:application/x-audacity-project:*.aup >> /usr/share/mime/globs2
echo application/x-audacity-project text/xml >> /usr/share/mime/subclasses
echo application/x-audacity-project >> /usr/share/mime/types



The above code can be added to the pinstall.sh file in a PETs PET package.


To reverse the process on uninstall use code below, it removes the lines added. Put them in the puninstall.sh file of a package (take care as mistakes can break MIME-Types):


#remove mime-type on uninstall (without using update-mime-database)
sed -i '/application\/x-audacity-project:\*.aup$/ d' /usr/share/mime/globs
sed -i '/50:application\/x-audacity-project:\*.aup$/ d' /usr/share/mime/globs2
sed -i '/application\/x-audacity-project text\/xml$/ d' /usr/share/mime/subclasses
sed -i '/application\/x-audacity-project$/ d' /usr/share/mime/types



You should still include the XML MIME-type description, otherwise if update-mime-database is used the added lines will be removed but new description written.

Also see
AssociateFiles - How Associate filetypes


Categories
CategoryFilesystem
CategoryComponent
CategoryTutorial

There are no comments on this page.
Valid XHTML :: Valid CSS: :: Powered by WikkaWiki