$ open hogehoge.pdf
とコマンドを実行すると,pdfのビューアーが起動して pdfを表示できます.
$ open http://www.google.com
とコマンドを実行すると,ブラウザが起動して URLを開いてくれます.
この設定を変更する方法をまとめます.OSはdebian系を想定します
概要
openコマンドにはいくつかの実装が存在します.
debian系だと open コマンドは xdg-open を使っているはずです.確認します
$ type open open is hashed (/usr/bin/open) $ ls -la /usr/bin/open lrwxrwxrwx 1 root root 22 Dec 30 00:00 /usr/bin/open -> /etc/alternatives/open $ readlink -f /usr/bin/open /usr/bin/xdg-open
たしかに /usr/bin/xdg-open を使っています
xdg-open の設定変更
xdg-open を使っている場合,設定は xdg-mime コマンドを使います.
アプリケーションの関連付けは,拡張子ではなく,mime type に対して行います.
例として hogehoge.pdf の mime typeを調べます
$ xdg-mime query filetype hogehoge.pdf application/pdf
application/pdf でした
application/pdfに関連付けらているアプリケーションを調べます
$ xdg-mime query default application/pdf gimp.desktop
gimp でした
アプリを変更する場合は以下のコマンドを実行します
$ xdg-mime default org.gnome.Evince.desktop application/pdf
org.gnome.Evince.desktop の部分がアプリケーションです.ここは /usr/share/applications/ 以下にあるファイルが指定できます.org.gnome.Evince.desktopを指定すると evince が関連付されます. (evince は軽量なpdfビューアです)
内部動作
環境変数 XDG_UTILS_DEBUG_LEVEL でデバッグログが出力されます.大きな値を設定すれば詳細が表示されるのでとりあず999を指定します
$ XDG_UTILS_DEBUG_LEVEL=999 xdg-mime query default application/pdf Checking /home/xxxxx/.config/mimeapps.list org.gnome.Evince.desktop
設定ファイルとして ~/.config/mimeapps.list を読んでいることが分かります.
設定されてない mime type を指定してみましょう.たとえば dummy/X を指定してみます
$ XDG_UTILS_DEBUG_LEVEL=999 xdg-mime query default dummy/X Checking /home/xxxxx/.config/mimeapps.list (割愛) Checking /usr/share//applications/defaults.list and /usr/share//applications/mimeinfo.cache
ユーザ側の設定ファイルをサーチして,エントリが見つからない場合はシステム側の設定ファイルを順にサーチしていることが分かります.