簡體   English   中英

在 Linux 中注冊文件擴展名/mime 類型

[英]Register file extensions / mime types in Linux

我正在開發一個具有自己的文件格式的 Linux 應用程序。 當您雙擊這些文件時,我希望我的應用程序能夠打開。

如何注冊文件擴展名並將其與 Linux 上的應用程序關聯? 我正在尋找一種標准方式(適用於基於 GNOME 和 KDE 的系統),並且可以在我的程序首次安裝或運行時自動完成。

使用來自freedesktop.org Portland 的xdg-utils

注冊 MIME 類型的圖標:

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

創建一個配置文件( freedesktop Shared 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

這可以識別您的文件並與圖標相關聯。 xdg-mime default可用於在安裝.desktop文件后將應用程序與 MIME 類型相關聯。

這有兩個部分。 您需要 注冊一個新的文件類型,然后為您的應用程序創建一個桌面條目 桌面條目將您的應用程序與新的 MIME 類型相關聯。

我認為 Gnome 和 KDE(也許只有 4+?)都使用了freedesktop shared mime info spec ,但我很可能錯了。

1) 在 linux 中,這是桌面環境的功能,而不是操作系統本身。
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)中

這是將所有現有答案組合、完成並更正為單個 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM