Frage

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.

Wie kann ich eine Dateierweiterung registrieren und sie meiner Anwendung unter Linux zuordnen?Ich suche nach einer Standardmethode (funktioniert mit GNOME- und KDE-basierten Systemen) und kann automatisch ausgeführt werden, wenn mein Programm installiert oder zum ersten Mal ausgeführt wird.

War es hilfreich?

Lösung

Verwenden xdg-utils aus freedesktop.org Portland.

Registrieren Sie das Symbol für den MIME-Typ:

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

Erstellen Sie eine Konfigurationsdatei (freedesktop Shared MIME-Dokumentation):

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

Installieren Sie die Konfigurationsdatei:

xdg-mime install mytype-mime.xml

Dadurch werden Ihre Dateien erkannt und mit einem Symbol verknüpft. xdg-mime default kann zum Zuordnen einer Anwendung zum MIME-Typ verwendet werden, nachdem Sie eine erhalten haben .desktop Datei installiert.

Andere Tipps

Dies besteht aus zwei Teilen.Du brauchst Registrieren Sie einen neuen Dateityp und dann Erstellen Sie einen Desktop-Eintrag für Ihre Anwendung.Der Desktop-Eintrag verknüpft Ihre Anwendung mit Ihrem neuen Mime-Typ.

Ich dachte, dass sowohl Gnome als auch KDE (vielleicht nur 4+?) das verwenden Freedesktop Shared Mime Info Spec, aber ich könnte mich durchaus irren.

1) Unter Linux ist dies eine Funktion Ihrer Desktop-Umgebung und nicht des Betriebssystems selbst.
2) GNOME und KDE verfügen über unterschiedliche Methoden, um dies zu erreichen.
3) Nichts hindert Sie daran, beides zu tun.

Probieren Sie dieses Skript aus:braucht:

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

stellen Sie sicher:Die FOO-Binärdatei befindet sich in /usr/bin (oder in $PATH).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top