Pregunta

Estoy desarrollando una aplicación Linux que tiene su propio formato de archivo.Quiero que mi aplicación se abra cuando hagas doble clic en esos archivos.

¿Cómo puedo registrar una extensión de archivo y asociarla con mi aplicación en Linux?Estoy buscando una forma que sea estándar (funcione con sistemas basados ​​en GNOME y KDE) y que pueda realizarse automáticamente cuando mi programa se instale o se ejecute por primera vez.

¿Fue útil?

Solución

Usar xdg-utils de freedesktop.org Portland.

Registre el icono 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 de freedesktop):

<?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>

Instale 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 utilizar para asociar una aplicación con el tipo MIME después de obtener un .desktop archivo instalado.

Otros consejos

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

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

1) en Linux, esto es una función de su entorno de escritorio y no del sistema operativo en sí.
2) GNOME y KDE tienen diferentes métodos para lograr esto.
3) No hay nada que te impida hacerlo en ambos sentidos.

Pruebe 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

Cerciorarse:El binario FOO está en /usr/bin (o en $PATH)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top