Registre extensiones de archivos / tipos de mime en Linux

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.

¿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 progtwig se instala o se ejecuta por primera vez.

    Use xdg-utils de freedesktop.org Portland .

    Registre el ícono para el tipo MIME:

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

    Cree un archivo de configuración ( documentación MIME compartida freedesktop) :

     < ?xml version="1.0"?>   A witty comment Uno Commento    

    Instala el archivo de configuración:

     xdg-mime install mytype-mime.xml 

    Esto hace que sus archivos sean reconocidos y asociados con un ícono. xdg-mime default se puede usar para asociar una aplicación con el tipo MIME después de que haya instalado un archivo .desktop .

    Hay dos partes para esto. Necesita registrar un nuevo tipo de archivo y luego crear una entrada de escritorio para su aplicación . La entrada de escritorio asocia su aplicación con su nuevo tipo de mime.

    Pensé que tanto Gnome como KDE (¿tal vez solo 4+?) Usaban la especificación de información mime compartida freedesktop , pero es posible que me equivoque.

    1) en Linux esta 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.

    Prueba este script: necesita:

     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\"?>   $COMMENT    " > ~/.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 

    asegúrese de que: FOO binario esté en / usr / bin (o en $ PATH)