2008-08-27 19 views
52

Estoy desarrollando una aplicación Linux que tiene su propio formato de archivo. Quiero que mi aplicación se abra cuando haces doble clic en esos archivos.Registrar extensiones de archivo/tipos mime en Linux

¿Cómo puedo registrar una extensión de archivo y asociarla a mi aplicación en Linux? Estoy buscando una forma que sea estándar (funciona con sistemas basados ​​en GNOME y KDE) y se puede hacer de forma automática cuando mi programa se instala o se ejecuta por primera vez.

Respuesta

42

Utilice xdg-utils desde freedesktop.org Portland.

Registrar el icono para el tipo MIME:

xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.png x-application-mytype 

Crear un archivo de configuración (freedesktop Shared MIME documentation):

<?xml version="1.0"?> 
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'> 
    <mime-type type="application/x-mytype"> 
    <comment>A witty comment</comment> 
    <comment xml:lang="it">Uno Commento</comment> 
    <glob pattern="*.myapp"/> 
    </mime-type> 
</mime-info> 

instalar el archivo de configuración:

xdg-mime install mytype-mime.xml 

esto se pone sus archivos reconocidos y asociado con un ícono. xdg-mime default se puede usar para asociar una aplicación con el tipo MIME después de obtener un archivo .desktop instalado.

+1

Ubuntu 9.04 y Fedora Core 10 tienen las utilidades xdg instaladas por defecto – jldupont

4

1) en Linux esto es una función de su entorno de escritorio en lugar del propio sistema operativo.
2) GNOME y KDE tienen diferentes métodos para lograr esto.
3) No hay nada que te impida hacer las dos cosas.

0

Prueba este script: necesidades:

1. your application icon -> $APP    = FIREFOX.png 
2. your mimetype icon -> application-x-$APP = HTML.png 

en el directorio actual:


#BASH SCRIPT: Register_my_new_app_and_its_extension.sh 
APP="FOO" 
EXT="BAR" 
COMMENT="$APP's data file" 

# Create directories if missing 
mkdir -p ~/.local/share/mime/packages 
mkdir -p ~/.local/share/applications 

# Create mime xml 
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?> 
<mime-info xmlns=\"http://www.freedesktop.org/standards/shared-mime-info\"> 
    <mime-type type=\"application/x-$APP\"> 
     <comment>$COMMENT</comment> 
     <icon name=\"application-x-$APP\"/> 
     <glob pattern=\"*.$EXT\"/> 
    </mime-type> 
</mime-info>" > ~/.local/share/mime/packages/application-x-$APP.xml 

# Create application desktop 
echo "[Desktop Entry] 
Name=$APP 
Exec=/usr/bin/$APP %U 
MimeType=application/x-$APP 
Icon=$APP 
Terminal=false 
Type=Application 
Categories= 
Comment= 
"> ~/.local/share/applications/$APP.desktop 

# update databases for both application and mime 
update-desktop-database ~/.local/share/applications 
update-mime-database ~/.local/share/mime 

# copy associated icons to pixmaps 
cp $APP.png    ~/.local/share/pixmaps 
cp application-x-$APP.png ~/.local/share/pixmaps 

asegurarse: FOO binaria hay en/usr/bin (o en el $ PATH)

Cuestiones relacionadas