この解決策をまとめて問題を解決し、KDEとXFCEでテキストファイルとフォントファイルを開いてテストしました。これは、任意の数のデスクトップ環境とMIMEタイプに適用できる汎用ソリューションです。それが機能する方法は、異なるデスクトップ環境に異なるアプリケーションを使用してファイルを開く、custom-openと呼ばれる単純なpythonスクリプトがあることです。ソリューションをセットアップする手順は次のとおりです。
- カスタムオープンスクリプトをコンピュータのパスに保存しますが、そうする必要はありません。
- .custom-open.iniをホームディレクトリに保存します〜/ .custom-open.ini
- custom-openを、処理したいファイルタイプのデフォルトアプリケーションとして設定します。
カスタムオープン
#!/usr/bin/env python
import traceback, sys, os, ConfigParser, os.path
from subprocess import Popen, check_output
from gtk import MessageDialog, MESSAGE_ERROR, BUTTONS_CLOSE
try:
file, desktop = sys.argv[1], os.environ['DESKTOP_SESSION']
mime = check_output(['file', '--mime-type', file]).strip().split(': ')[1]
config = ConfigParser.RawConfigParser()
config.read(os.path.expanduser('~/.custom-open.ini'))
cmd = config.get(desktop, mime)
Popen([cmd] + sys.argv[1:])
except:
msg = "CUSTOM OPEN ERROR\n\n" + traceback.format_exc()
MessageDialog(None, 0, MESSAGE_ERROR, BUTTONS_CLOSE, msg).run()
.custom-open.ini
[gnome]
text/plain = gedit
application/x-font-ttf = gnome-font-viewer
[xubuntu]
text/plain = leafpad
application/x-font-ttf = gnome-font-viewer
[kde-plasma]
text/plain = kate
application/x-font-ttf = kfontview
このソリューションの優れている点は、新しいデスクトップ環境をいくつでも追加でき、MIMEタイプをいくつでも追加できることです。デスクトップ環境に提供する必要がある名前を確認するには、ターミナルで以下のコマンドを実行します。
env | grep -i DESKTOP_SESSION
ちょうど実行するファイルの正確なMIMEタイプをチェックするには:
file --mime-type filename
編集:シンボリックリンクの必要性がなくなり、使いやすくなりました。エラーが発生した場合にアラートを表示するグラフィカルエラーハンドラーも追加しました。