Rejestracja rozszerzeń plików / typów mime w Linuksie

Rozwijam aplikację na Linuksa, która ma swój własny format plików. Chcę, aby moja aplikacja otworzyła się po dwukrotnym kliknięciu tych plików.

Jak mogę zarejestrować rozszerzenie pliku i skojarzyć je z moją aplikacją na Linuksie? Szukam sposobu, który jest standardowy (działa z systemami GNOME i KDE) i może być wykonany automatycznie, gdy mój program jest zainstalowany lub uruchomiony po raz pierwszy.

Author: Brian Tompsett - 汤莱恩, 2008-08-27

4 answers

Użyj xdg-utils z freedesktop.org Portland .

Zarejestruj ikonę dla typu MIME:

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

Tworzenie pliku konfiguracyjnego (freedesktop współdzielona dokumentacja MIME):

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

Zainstaluj plik konfiguracyjny:

xdg-mime install mytype-mime.xml

Dzięki temu Twoje pliki zostaną rozpoznane i powiązane z ikoną. xdg-mime default może być używany do kojarzenia aplikacji z typem MIME po uzyskaniu .desktop plik zainstalowany.

 42
Author: skolima,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 08:18:00

Są dwie części. Musisz zarejestrować nowy typ pliku, a następnie utworzyć wpis pulpitu dla Twojej aplikacji. Wpis pulpitu kojarzy aplikację z nowym typem mime.

Myślałem, że zarówno Gnome jak i KDE (może tylko 4+?) użyłem freedesktop shared MIME info spec , ale mogę się mylić.

 9
Author: Kai,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-28 08:03:04

1) w Linuksie jest to funkcja Twojego środowiska graficznego, a nie samego systemu operacyjnego.
2) GNOME i KDE mają różne metody, aby to osiągnąć.
3) nic cię nie powstrzymuje przed robieniem tego w obie strony.

 4
Author: Joel Coehoorn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-08-27 19:14:01

Wypróbuj ten skrypt: needs:

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

W bieżącym katalogu:


#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

Upewnij się: FOO binary znajduje się w /usr / bin (lub w $PATH)

 1
Author: fastrizwaan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-13 08:19:49