デフォルトのUnityインターフェースでUbuntu 12.04を使用しています。後でKDEデスクトップ、XFCE、LXDE、gnome-Shell、Cinnamonをインストールしました。
KDEには、Unityとは異なるデフォルトアプリケーションが付属しています。
kwrite
、konsole
は仮想端末として、kfontview
、dolphin
as File browserなど。他のDEには、他のいくつかのデフォルトアプリケーションが付属しています。
この問題は、gedit
とkwrite
の両方で開くことができるテキストファイルなどのファイルを開くときに発生します。KDEではkwrite
を使用し、UnityまたはGnomeではgedit
を使用します。しかし、このように設定する方法はありません。 KDEとUnityの両方でそれぞれの設定を変更することで、テキストファイルのデフォルトアプリケーションを設定できますが、DEの両方でデフォルトになります。
たとえば、kfontviewer
をKDEのデフォルトのフォント表示アプリケーションとして設定した場合、UnityまたはGnomeを使用しているとき(およびその逆の場合)もフォントを開きます。これは問題です。なぜなら、他のDEのプログラムのロードには、使用されているDEのデフォルトのプログラムよりも長い時間がかかるからです。
私の質問は、DEごとに異なるデフォルトアプリケーションを使用できますか?どうやって?
この解決策をまとめて問題を解決し、テキストファイルとフォントファイルを開いてKDEとXFCEでテストしました。これは、任意の数のデスクトップ環境とMIMEタイプに適用できる一般的なソリューションです。動作方法は、デスクトップ環境ごとに異なるアプリケーションを使用してファイルを開くcustom-openと呼ばれる単純なpythonスクリプトがあります。ソリューションをセットアップする手順は次のとおりです。
カスタムオープン
#!/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
編集済みシンボリックリンクの必要性がなくなり、使いやすくなりました。また、エラーが発生した場合にアラートを表示するグラフィカルなエラーハンドラも追加しました。
それを行うための「正しい」方法が見つからない場合、次のようなブルートフォースメソッドを使用できます。
cd $HOME;ls -Rlrt | less
のようなことをして、更新されたばかりのファイル、つまりそれらの選択が保存された場所を見つけますできれば、デスクトップ環境に構成ファイルを取得する場所を指示するオプションを使用して、シェルスクリプトからデスクトップ環境を切り替える方法があります。それは常にファイルを移動するよりもクリーンかもしれませんが、私はそれがどのように機能するかを研究していません。
別のはるかに単純なソリューションですが、正確にはあなたが求めていたものではありませんが、次のようになります。
これらすべてのユーザー-rwxrwxr-x
(chmod 775 list-of-files-and-directories
)からアクセスする必要がある共通データファイルを作成します。そうすれば、別の「ユーザー」が最初に書き込んだファイルに書き込もうとしたときにアクセス権エラーが発生しなくなります。