2008-08-27 15 views
52

Ich entwickle eine Linux-Anwendung, die ein eigenes Dateiformat hat. Ich möchte, dass meine App geöffnet wird, wenn Sie auf diese Dateien doppelklicken.Registrieren Sie Dateierweiterungen/MIME-Typen in Linux

Wie kann ich eine Dateierweiterung registrieren und sie mit meiner Anwendung unter Linux verbinden? Ich suche nach einem Weg, der Standard ist (arbeitet mit GNOME und KDE-basierten Systemen) und kann automatisch durchgeführt werden, wenn mein Programm installiert oder zum ersten Mal ausgeführt wird.

Antwort

42

Verwenden Sie xdg-utils von freedesktop.org Portland.

das Symbol für den MIME-Typ registrieren:

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

eine Konfigurationsdatei (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> 

die Konfigurationsdatei installieren:

xdg-mime install mytype-mime.xml 

Dies wird Ihre Dateien erkannt und assoziiert mit einem Symbol xdg-mime default kann verwendet werden zum Verknüpfen einer Anwendung mit dem MIME-Typ, nachdem Sie eine .desktop Datei installiert haben.

+1

Ubuntu 9.04 und Fedora Core 10 haben die xdg-Utilities standardmäßig installiert – jldupont

4

1) in Linux ist dies eine Funktion Ihrer Desktop-Umgebung und nicht das Betriebssystem selbst.
2) GNOME und KDE haben verschiedene Methoden, um dies zu erreichen.
3) Es gibt nichts, was Sie daran hindert, beides zu tun.

0

dieses Skript Versuchen: Bedürfnisse:

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

im aktuellen Verzeichnis:


#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 

sicher: binäre FOO ist es in/usr/bin (oder in $ PATH)