O xdg-mime faz parte de uma coleção de scripts chamada xdg-utils, "um conjunto de interfaces comuns para ambientes de desktop (DE)". No seu caso particular, vou apenas citar o comentário do MestreLion de here :
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"
Quanto à mecânica interna do xdg-utils ... Eles são apenas scripts de shell verificando um DE e, se encontrado, chamando as ferramentas de arquivo do DE para executar uma determinada tarefa. No GNOME xdg-open chama gvfs-open e xdg-mime chama gvfs-info (ambos gvfs- * ferramentas dando preferência ao julgamento por extensão de arquivo). No seu caso, nenhum DE é encontrado, então xdg-mime retorna para file
[1] para obter informações sobre o tipo de conteúdo do arquivo. Aqui está a seção de código do xdg-mime para DE "genérica" (ou melhor, desconhecida):
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 }
Embora seja verdade file
[1] os resultados nem sempre são 100% precisos, não há muito o que fazer sobre isso (ainda é a melhor ferramenta para esse trabalho IMO). No entanto, se você quiser determinar os tipos MIME baseados apenas nas extensões de arquivos (a la windows), você poderá escrever seu próprio script. Aqui está um exemplo simples de python:
#!/usr/bin/python2
import os
import sys
import mimetypes
if len(sys.argv) != 2:
print ("Usage: ./pymime filename")
raise SystemExit
testfile = os.path.abspath(sys.argv[1])
mt = mimetypes.guess_type(testfile, strict=True)[0]
print ("%s" % mt)
sys.exit(0)
Nomeie-o pymime e execute:
./pymime yourfile