MIMEタイプではなくファイル名に基づいてデフォルトアプリケーションを設定する

MIMEタイプではなくファイル名に基づいてデフォルトアプリケーションを設定する

名前に基づいてファイルを開くアプリケーションを定義したいと思います。

たとえば、崇高なまたは原子炉を開くかGemfileというファイルが必要です。Dockerfile

MIMEタイプが利用可能であることを知っていますが、両方のファイルがtext/plain

それとも無言劇のジャンルがありますかGemfile

答え1

ファイル名ベースの一致は、MIMEタイプを定義する最も簡単な方法の1つです。 GemfilesやDockerfilesの公式MIMEタイプはありませんが、見てみると、多くの非公式MIMEタイプが一般的に名前を付けられていることが/usr/share/mime/packages/ わかります。<sub-class-of type="text/plain"/>text/x-*text/x-pythontext/x-markdown

カスタムMIMEタイプを追加するのは通常簡単です。特にファイル名のみが使用できる場合にはさらにそうです。

現在のmimetypeを観察すると、両方DockerfileともGemfile次のようになりますtext/plain

$ xdg-mime query filetype Dockerfile 
text/plain
$ xdg-mime query filetype Gemfile 
text/plain

またはという名前のtext/x-dockerfileファイルの新しいMIMEタイプを作成し、ファイルの新しいMIMEタイプを生成します。これを行うには、次の内容で名前付き XML ファイルを作成します。Dockerfile*.dockerfiletext/x-gemfileGemfilex-dockerfile.xml

<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
    <mime-type type="text/x-dockerfile">
        <comment>Dockerfile</comment>
        <sub-class-of type="text/plain"/>
        <glob pattern="Dockerfile"/>
        <glob pattern="*.dockerfile"/>
    </mime-type>
</mime-info>

そして、x-gemfile.xml次の内容で名前が付けられた別のファイルは次のとおりです。

<?xml version="1.0"?>
<mime-info xmlns='http://www.freedesktop.org/standards/shared-mime-info'>
    <mime-type type="text/x-gemfile">
        <comment>Gemfile</comment>
        <sub-class-of type="text/plain"/>
        <glob pattern="Gemfile"/>
    </mime-type>
</mime-info>

次に、mimetypeをインストールします。ローカルユーザーの場合は、次のコマンドを実行します。

xdg-mime install --mode user x-dockerfile.xml
xdg-mime install --mode user x-gemfile.xml
update-mime-database ~/.local/share/mime

システム全体にインストールするには、次のコマンドを実行します。

xdg-mime install --mode system x-dockerfile.xml
xdg-mime install --mode system x-gemfile.xml
update-mime-database /usr/share/mime

検出されたMIMEタイプが変更されたことを確認しました。

$ xdg-mime query filetype Dockerfile 
text/x-dockerfile
$ xdg-mime query filetype Gemfile
text/x-gemfile

これで、必要なテキストエディタに割り当てることができます。

関連情報