我正在开发一种具有自己文件格式的Linux应用程序。当您双击那些文件时,我希望打开我的应用。
如何在Linux上注册文件扩展名并将其与我的应用程序关联?我正在寻找一种标准方法(可用于基于GNOME和KDE的系统),并且可以在首次安装或运行程序时自动完成。
使用freedesktop.org波特兰的xdg-utils。
注册MIME类型的图标:
1
| xdg-icon-resource install --context mimetypes --size 48 myicon-file-type.webp x-application-mytype |
创建配置文件(freedesktop共享MIME文档):
1 2 3 4 5 6 7 8
| <?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> |
安装配置文件:
1
| xdg-mime install mytype-mime.xml |
这将使您的文件被识别并与图标关联。 xdg-mime default可用于在安装了.desktop文件后将应用程序与MIME类型相关联。
有两个部分。您需要注册一个新的文件类型,然后为您的应用程序创建一个桌面条目。桌面条目将您的应用程序与新的mime类型相关联。
我认为Gnome和KDE(也许只有4个?)都使用了freedesktop共享mime信息规范,但是我很可能是错的。
1)在Linux中,这是桌面环境的功能,而不是os本身的功能。
2)GNOME和KDE有不同的方法来完成此操作。
3)没有什么可以阻止您同时进行。
尝试此脚本:需要:
1 2
| 1. your application icon -> $APP = FIREFOX.webp
2. your mimetype icon -> application-x-$APP = HTML.webp |
当前目录中的
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| #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.webp ~/.local/share/pixmaps
cp application-x-$APP.webp ~/.local/share/pixmaps |
确保:
FOO二进制文件在/ usr / bin(或$ PATH)中