デスクトップ環境のファイルマネージャにおける未登録なファイルタイプの登録とアプリケーションの関連付けについて
未知の種類と関連付け
ファイル種類について
多くの一般的なファイルの「種類」は、shared-mime-infoが提供する(freedesktop.orgによる)データベースによってサポートされていて、GUIファイルマネージャなどから、その種類が認識されていると分かる。しかし、世界的に無名な形式やアプリケーション独自の形式のファイルを使用する場合、未知のファイル形式という扱いになってしまう。
そこで、未知のファイル形式は、決められた場所に決められた書式のファイルを配置することでシステムに登録することになる。
関連付けについて
GUIファイルマネージャ上ではファイル形式によって開くアプリケーションの候補が変わり、画像なら画像ビューアや画像エディタ、オフィス文書ならオフィススイートなどから(ファイルアイコンの)右クリックメニューで開くことができ、その中から既定のもの(ファイルマネージャで設定*1したもの)がダブルクリックで起動できる。
その際の関連付け候補は、アプリケーションの.desktopファイルに記述されているMIMEタイプから決められていて、新しいアプリケーションを作成したとき*2には、そのアプリケーションが扱う形式に関連付けておくと、ファイルマネージャから開けるようにすることができる。
既知のMIMEタイプに対する関連付けを変更する
既知のMIMEタイプに対して、ファイルアイコン右クリック時のメニューやダブルクリック時に開くアプリケーションが望みのものでない場合(どのアプリケーションから開きたいのかを変更したい場合)は、ファイルアイコンの右クリックメニューにある「別(他)のアプリで開く」といった名前のメニュー項目からアプリケーションを選択もしくはコマンド名の直接入力を行い、一度そのアプリケーションで開くと、次からはそのアプリケーションで開くことができるようになる。設定した関連付けは${HOME}/.local/share/applications/mimeapps.listや${HOME}/.local/share/applications/defaults.listといったファイルに
[MIMEタイプ]=[desktopファイルのファイル名];
という内容で記録され、コマンド名を手動で指定した場合は${HOME}/.local/share/applications/[コマンド名]-usercreated.desktopや${HOME}/.local/share/applications/userapp-[コマンド名]-[文字列].desktopといった.desktopファイルも保存される。
新しいMIMEタイプを登録する
未登録なMIMEタイプは、/usr/share/mime/packages/[名前].xmlというファイルにその定義を記述することで登録することができる。
一般ユーザが自分用に定義をすることも可能で、その場合は${HOME}/.local/share/mime/packages/以下にXMLファイルを配置する。
今回は例として、RCP(レコンポーザ形式のMIDIデータ)という形式を登録することにする。
ファイル名: ~/.local/share/mime/packages/sted2.xml
<?xml version="1.0" encoding="UTF-8"?> <mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info"> <mime-type type="audio/rcp"> <comment>Recomposer MIDI audio</comment> <comment xml:lang="ja">レコンポーザ形式MIDIオーディオ</comment> <alias type="audio/x-rcp"/> <magic priority="50"> <match value="RCM" type="string" offset="0"/> </magic> <glob pattern="*.rcp"/> </mime-type> </mime-info>
「magic」というのは、ファイルの先頭に書かれている、ファイルの種類ごとに固有なデータのこと*3で、RCP形式では、GHexなどのバイナリエディタで開くと「RCM-PC98V2.0...」から始まっていることが分かるので、「RCM」と記述した*4。他の部分には種類の説明やMIMEタイプ文字列、別名、ファイル名パターン(拡張子の指定に使用)といった情報が書かれている。/usr/share/mime/packages/以下の既存のXMLファイルを色々開くと参考になる。
XMLファイルを配置した後は、変更を反映するためにupdate-mime-databaseを実行する。
$ update-mime-database ~/.local/share/mime/
システム全体で有効にしたいのであれば上のファイルを/usr/share/mime/packages/以下に作成し
$ sudo update-mime-database /usr/share/mime/
管理者権限で/usr/share/mime/以下に対して実行する。
新しいアプリケーションにMIMEタイプを関連付ける
アプリケーションとMIMEタイプを.desktopファイルで結びつける。一般ユーザが自分用に使用する場合は${HOME}/.local/share/applications/以下、システム全体で使用する場合は/usr/share/applications/以下に配置する。
ここでは、上のRCP形式のファイルをSTed2に関連付ける。
ファイル名: ~/.local/share/applications/sted2.desktop
[Desktop Entry] Name=STed2 Comment=High-performance MIDI sequence editor / Music composer system Comment[ja]=高機能な MIDI シーケンスエディタ・ミュージックコンポーザ Exec=sted2 Terminal=false Type=Application StartupNotify=false MimeType=audio/midi;audio/rcp; Categories=Application;AudioVideo;Audio;Midi;Sequencer;
こちらも反映作業が必要で、update-desktop-databaseを使用する。
$ update-desktop-database ~/.local/share/applications/
システム全体では/usr/share/applications/へ.desktopファイルを配置して
$ sudo update-desktop-database /usr/share/applications/
管理者権限で/usr/share/applications/に対して処理をする。