在Linux中注册文件扩展名/ MIME类型

61
我正在开发一款拥有自己文件格式的Linux应用程序。我希望当您双击这些文件时,我的应用程序能够打开它们。
如何在Linux上注册文件扩展名并将其与我的应用程序关联?我正在寻找一种标准方法(适用于GNOME和基于KDE的系统),并且可以在我的程序安装或首次运行时自动完成。
5个回答

56

使用freedesktop.org Portlandxdg-utils

为 MIME 类型注册图标:

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

创建配置文件(freedesktop 共享 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>

安装配置文件:

xdg-mime install mytype-mime.xml

这将使您的文件被识别并与一个图标关联。在安装.desktop文件后,可以使用xdg-mime default来将应用程序与MIME类型关联。


1
Ubuntu 9.04和Fedora Core 10默认安装了xdg实用程序。 - jldupont
1
请注意:就XML示例而言,应该使用application-x-mytype而不是写成x-application-mytype来调用xdg-icon-resource - KJ7LNW

10

4

1) 在Linux中,这是您的桌面环境的功能,而不是操作系统本身的功能。
2) GNOME和KDE有不同的方法来完成此操作。
3) 没有任何阻止您同时使用两种方法。


3
尝试这个脚本:需要:
1. your application icon -> $APP               = FIREFOX.png 
2. your mimetype icon    -> application-x-$APP = HTML.png

在当前目录下:


#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

请确保: FOO二进制文件位于/usr/bin(或$PATH中)


0
这是所有现有的答案合并、完成并纠正为一个单一的bash脚本。
#!/bin/bash
set -e # stop on error

APP=my-app
EXT=my-app
COMMENT=Comment
EXEC=/usr/bin/my-app
LOGO=./logo.png

xdg-icon-resource install --context mimetypes --size 48 $LOGO application-x-$APP

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>" > $APP-mime.xml

xdg-mime install $APP-mime.xml
rm $APP-mime.xml
update-mime-database $HOME/.local/share/mime

echo "[Desktop Entry]
Name=$APP
Exec=$EXEC %U
MimeType=application/x-$APP
Icon=application-x-$APP
Terminal=false
Type=Application
Categories=
Comment=$COMMENT
"> $APP.desktop
desktop-file-install --dir=$HOME/.local/share/applications $APP.desktop
rm $APP.desktop
update-desktop-database $HOME/.local/share/applications

xdg-mime default $APP.desktop application/x-$APP


请注意,此解决方案适用于本地用户安装。以下是系统范围安装的方法:
set -e
install -D -m 0755 $APP /usr/bin/$APP
install -D -m 0644 assets/$APP.png /usr/share/icons/hicolor/48x48/mimetypes/application-x-$APP.png
install -D -m 0644 assets/$APP-mime.xml /usr/share/mime/packages/
install -D -m 0644 assets/$APP.desktop /usr/share/applications/

umask 0022
# Depending on your distribution, also run:
update-mime-database /usr/share/mime
update-desktop-database /usr/share/applications
gtk-update-icon-cache -f -t /usr/share/icons/hicolor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接