Domanda

Sto sviluppando un'applicazione Linux che ha un proprio formato di file.Voglio che la mia app si apra quando fai doppio clic su quei file.

Come posso registrare un'estensione di file e associarla alla mia applicazione su Linux?Sto cercando un metodo standard (funziona con i sistemi basati su GNOME e KDE) e che possa essere eseguito automaticamente quando il mio programma viene installato o eseguito per la prima volta.

È stato utile?

Soluzione

Utilizzo xdg-utils da freedesktop.org Portland.

Registra l'icona per il tipo MIME:

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

Creare un file di configurazione (documentazione MIME condivisa 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>

Installa il file di configurazione:

xdg-mime install mytype-mime.xml

In questo modo i tuoi file vengono riconosciuti e associati a un'icona. xdg-mime default può essere utilizzato per associare un'applicazione al tipo MIME dopo aver ottenuto un file .desktop installato.

Altri suggerimenti

Ci sono due parti in questo.Devi registrare un nuovo tipo di file poi crea una voce desktop per la tua applicazione.La voce desktop associa la tua applicazione al nuovo tipo MIME.

Pensavo che sia Gnome che KDE (forse solo 4+?) usassero il file specifiche delle informazioni MIME condivise di freedesktop, ma potrei benissimo sbagliarmi.

1) in Linux questa è una funzione dell'ambiente desktop piuttosto che del sistema operativo stesso.
2) GNOME e KDE hanno metodi diversi per raggiungere questo obiettivo.
3) Non c'è niente che ti impedisca di farlo in entrambi i modi.

Prova questo script:esigenze:

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

nella directory corrente:


#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

assicurarsi:Il binario FOO è presente in /usr/bin (o in $PATH)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top