在Linux中注册文件扩展名/ MIMEtypes

我正在开发一个具有自己的文件格式的Linux应用程序。 双击这些文件时,我想让我的应用程序打开。

我怎样才能注册一个文件扩展名,并将其与我的Linux应用程序关联? 我正在寻找一种标准的方法(适用于基于GNOME和KDE的系统),并且可以在我的程序第一次安装或运行时自动完成。

使用freedesktop.org Portland的 xdg-utils

注册MIMEtypes的图标:

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

创build一个configuration文件( 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> 

安assembly置文件:

 xdg-mime install mytype-mime.xml 

这使您的文件被识别并与一个图标相关联。 在安装.desktop文件之后, xdg-mime default可用于将应用程序与MIMEtypes关联。

这有两个部分。 您需要注册一个新的文件types ,然后为您的应用程序创build一个桌面条目 。 桌面条目将您的应用程序与您的新的MIMEtypes相关联。

我以为Gnome和KDE(可能只有4+?)都使用freedesktop共享的mime信息规范 ,但我可能是错的。

1)在Linux中,这是你的桌面环境的function,而不是操作系统本身。
2)GNOME和KDE有不同的方法来完成这个任务。
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中)