Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

I installed a new file type to share MIME database. But xdg-mime query filetype cannot tell the new type. This problem only happens on my own Linux OS which does not use GNOME or KDE as its desktop. On Ubuntu, the same process works well.

I found that xdg-mime query filetype uses "file -i filename" under the hood on my OS but uses gnomevfs on Ubuntu.

Here are my steps:

  1. wrote a xml file for my new file type my_file.xml
  2. xdg-mime install my_file.xml
  3. xdg-mime query filetype <name of file to query> .... no output :-(

I checked /usr/share/mime/applications and found the xml entry generated by update-mime-database there. And the C API g_file_info_get_content_type() can get the proper mime type.

So it seems the shared-mime-info has been updated successfully. But the "file" command still fails, why?

Here is my xml file:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
    <mime-type type="application/vnd.xxx.xxx.xxx">
        <comment>xxxx</comment>
        <glob pattern="*.dcf"/>
    </mime-type>
</mime-info>
share|improve this question
    
My destop system is neither GNOME or KDE. The debug info "Running file -i..." and I found it run to info_generic(): { DEBUG 1 "Running file -i \"$1\"" /usr/bin/file -i "$1" 2> /dev/null | cut -d ":" -f 2 | sed s/"^ "// if [ $? -eq 0 ]; then exit_success else exit_failure_operation_failed fi } –  Amanda Mar 22 '11 at 3:33
    
If you dont have any desktop enviroment, you should not use xdg-mime (or any other xdg tool). xdg is meant to provide interoperability between different desktop enviroments, but not when there is none. Think of xdg as desktop-agnostic, but not "desktop-atheist" –  MestreLion Jul 4 '11 at 4:05

2 Answers 2

up vote 1 down vote accepted

I think I find the answer. On my system "xdg-mime query filetype ..." uses"file" command to get the file type, while on ubuntu it uses "gnomevfs".

It seems the "file" command does not check xml entries of shared-mime-info, but looks into the file "/user/share/file/magic" to get the file MIME type.

If I use "file" command on Ubuntu, it can not tell me the right MIME type, either.

I'll study how to edit this magic file.

share|improve this answer
    
There are two different MIME databases. file uses the unix traditional /etc/magic (and other …/magic). xdg-mime uses the Freedesktop database (when it's available). –  Gilles Mar 23 '11 at 0:22
    
@Giles: xdg-mime uses Freedesktop database when it is avaliable and and there is a DE (like Gnome or KDE) installed to actually read the database. Since OP has no DE, xdg-mime has no tools to query its own database, and falls back to file –  MestreLion Jul 1 '11 at 18:35

Try installing http://search.cpan.org/dist/File-MimeInfo/ (or your distro's package for this) which contains mimeinfo utility.

After installing this package, xdg-mime (tested version 1.1.0 rc1 on Arch Linux) should now detect that mimeinfo (which does use the XDG shared mime info database) is available, and use that instead of falling back on file -i.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.