XDG仕様(mimeapps.list)に加えて、ファイル拡張子でファイル形式を決定する方法

XDG仕様(mimeapps.list)に加えて、ファイル拡張子でファイル形式を決定する方法

R nowebファイルのデフォルトアプリケーションを設定しようとしていますが、指定する場所が見つかりませんでした。その理由は、ファイルマネージャが指定されたスキームの代わりに、またはファイル拡張子(.Rnw)でファイル形式を決定するようです。無料デスクトップウェブサイト(例:mimeapps.list、mimeinfo.cache、defaults.list...)

pcmanfmとthunarをファイルマネージャとして使ってみました。ファイルタイプの決定については同意しますが、xdg-mime query filetypeユーティリティについては異なります。以下の最小例と構成ファイルを参照してください。

また、xdg-mimeユーティリティはlocalを無視しているように見えますが、mimeapps.listファイルマネージャはそれを尊重します。

これ質問例: ファイルの種類がこれらのファイル マネージャーの名前拡張子によって決まると仮定していますか?関連する設定はどこにありますか?

私はウィンドウマネージャとpcmanfmデスクトップマネージャとしてAwesome WMを使用します。

修正する:私が見つけたこのチュートリアルでは、pcmanfmのファイル拡張子について説明します。しかし、私の問題はまだMIMEタイプと推論されたタイプがpcmanfm一致しないことです(rnoweb.RnwMIMEタイプですtext/plainrnoweb0.Rnwはいinode/x-empty、しかし両方がpcmanfmリストされていますR Sweave file)。

アップデート 2 [解決済み]: @mjiはxmlファイルをに入れることを提案しました。~/.local/share/mime/packagesこのファイルはすでに/usr/share/mime/text/x-r-sweave.Rnw<comment>また、x-r-sweaveファイルにMIMEタイプを割り当てます。私の質問ですでにこれを見つけましたが、無視しました。 (検索しましたx-r-noweb


最小限の例:

空のディレクトリに4つのファイルを作成しました。 2つは空で、2つはサンプルの内容です。

touch plain0 rnoweb0.Rnw

cat > plain <<EOF
text
EOF

cat > rnoweb.Rnw <<EOF
<<>>=
1+1
@
EOF

このファイルに対して実行し、xdg-mime query filetypexdg-mime query defaultの結果を得ます。

filename      MIME type           Default app
-------------------------------------------------
plain         text/plain          medit.desktop
plain0        inode/x-empty
rnoweb0.Rnw   inode/x-empty
rnoweb.Rnw    text/plain          medit.desktop

ただし、ファイル形式は「R Sweave File」と表示され、thunarファイルはプレーンテキスト文書(ドイツ語で「Einfaches Textdokument」)として表示されます。ファイルマネージャにリストされているデフォルトのアプリケーションは.GVim用です。pcmanfm*.Rnwplain*RStudio*.Rnwplain*

xdg-mimeプレーンテキストファイルは、そのユーティリティとは異なりますが、私のローカル設定に一致するGVimを使用して開きます。.local/share/applications/mimeapps.list

私のシステムで唯一一致するファイルは次のとおりlocate mimeinfoです。locate mimeapps

/etc/xdg/mimeapps.list
/usr/share/applications/mimeinfo.cache
~/.local/share/applications/mimeapps.list
~/.local/share/applications/mimeinfo.cache

greprstudioこれらのファイル(rstudio.desktop)が発生するとpingが生成されます(同様の結果はにまとめられています{...})。

/usr/share/applications/mimeinfo.cache 
    application/x-r-data=rstudio.desktop;
    application/x-r-project=rstudio.desktop;
    text/css=rstudio.desktop;
    text/html=firefox.desktop;abiword.desktop;calibre-ebook-edit.desktop;rstudio.desktop;elinks.desktop;
    text/javascript=rstudio.desktop;
    text/x-R=rstudio.desktop;
    text/x-markdown=rstudio.desktop;
    text/x-r=rstudio.desktop;
    text/x-r-{doc,markdown,history,html,presentation,profile,source,sweave}\
    =rstudio.desktop;
    text/x-tex=texstudio.desktop;gvim.desktop;rstudio.desktop;

XDG仕様に記載されている他のファイルにはrstudio

greptext/plainMIMEタイプをpingすると、次のような結果が得られます。

/etc/xdg/mimeapps.list : text/plain=medit.desktop;
/usr/share/applications/mimeinfo.cache : text/plain=medit.desktop;libreoffice-writer.desktop;gvim.desktop;abiword.desktop;
~/.local/share/applications/mimeapps.list : text/plain=gvim.desktop
~/.local/share/applications/mimeapps.list : text/plain=gvim.desktop;

ベストアンサー1

MIME情報ファイルの作成

$ vi ~/.local/share/mime/packages/x-r-noweb.xml

$ cat ~/.local/share/mime/packages/x-r-noweb.xml
<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">
    <mime-type type="text/x-r-noweb">
        <comment>R noweb</comment>
        <glob pattern="*.Rnw"/>
    </mime-type>
</mime-info>

MIMEデータベースの更新

$ update-mime-database ~/.local/share/mime/

$ xdg-mime query filetype rnoweb0.Rnw 
text/x-r-noweb
$ mimetype -d rnoweb0.Rnw
rnoweb0.Rnw: R noweb
$ mimetype rnoweb0.Rnw
rnoweb0.Rnw: text/x-r-noweb

これで基本アプリケーションを設定できるようになりました

$ xdg-mime default nice-app.desktop text/x-r-noweb
# (or edit ~/.local/share/applications/mimeapps.list)

$ xdg-mime query default text/x-r-noweb
nice-app.desktop

おすすめ記事