デスクトップ環境ごとに異なるデフォルトアプリケーションを設定する


9

デフォルトのUnityインターフェイスでUbuntu 12.04を使用しています。後でKDEデスクトップ、XFCE、LXDE、gnome-shell、Cinnamonをインストールしました。

KDEには、Unityとは異なるデフォルトアプリケーションが付属しています。

  • kwrite テキスト編集用
  • konsole 仮想端末として
  • kfontview フォントの表示とインストール
  • dolphin ファイルブラウザなどとして

他のDEには、他のデフォルトアプリケーションが付属しています。

問題は、両方で開くことができて、テキストファイルとしてファイルを開きたい場合に生じるgeditkwrite、私が使用したい、kwriteKDE上およびgeditUnityまたはGnomeの上。しかし、このように設定する方法はありません。KDEとUnityの両方でそれぞれの設定を変更することで、テキストファイルのデフォルトアプリケーションを設定できますが、両方のDEのデフォルトになります。

たとえばkfontviewer、KDEでデフォルトのフォント表示アプリケーションとして設定した場合、UnityまたはGnomeでフォントを表示することもできます。他のDEのプログラムをロードすると、使用されているDEのデフォルトのプログラムよりも時間がかかるため、これは問題です。

私の質問は、DEごとに異なるデフォルトアプリケーションを使用できますか?どうやって?


2
これが役立つかどうかを確認してください:LinuxでのGNOMEおよびKDEのデフォルトアプリケーションの構成
ミッチ

回答:


5

この解決策をまとめて問題を解決し、KDEとXFCEでテキストファイルとフォントファイルを開いてテストしました。これは、任意の数のデスクトップ環境とMIMEタイプに適用できる汎用ソリューションです。それが機能する方法は、異なるデスクトップ環境に異なるアプリケーションを使用してファイルを開く、custom-openと呼ばれる単純なpythonスクリプトがあることです。ソリューションをセットアップする手順は次のとおりです。

  1. カスタムオープンスクリプトをコンピュータのパスに保存しますが、そうする必要はありません。
  2. .custom-open.iniをホームディレクトリに保存します〜/ .custom-open.ini
  3. 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

編集:シンボリックリンクの必要性がなくなり、使いやすくなりました。エラーが発生した場合にアラートを表示するグラフィカルエラーハンドラーも追加しました。


1
お返事ありがとうございます。私はあなたの手順に従い、すべての対応するスクリプト、リンク、ファイルを作成しました。ソリューションはコマンドラインからうまく機能し、宣伝どおりに機能します。しかし、スクリプト(またはシンボリックリンク)を既定のアプリケーションとして設定して特定の種類のファイルを開くと、失敗し、セカンダリの既定に戻ります。何か悪いことをしているかどうかはわかりません。
グルタニメート

スクリプトをデフォルトのアプリとして定義する方法は次のとおりです。1。〜/ .local / share / applicationsでランチャー(co.desktop)を作成しExec=/home/user/.scripts/Customization/Defaultapps/custom-open-textます。2.)./local/share/applications/mimeapps.list次のデフォルトの関連付けを編集して追加しますtext/plain=co.desktop。この手順で間違いを見つけましたか?
グルタニメート

1
新しいバージョンを試してみましょう。使いやすくするためにいくつかの機能強化を行いました。グラフィカルなエラーハンドラーも追加したので、エラーメッセージでアラートがポップアップ表示されます。それでも機能しない場合は、再試行してエラーメッセージをコメントに投稿してください。また、Ubuntuのどのバージョンと、どのデスクトップ環境を試したかについても教えてください。
Marwan Alsabbagh

それは機能し、(LXDE / Unityを使用して)とても素晴らしいです!あなたのソリューションは、この賞金の最後のポイントすべてに値します。お時間を割いていただき、誠にありがとうございます。(PS:このような機能はデフォルトでUbuntuに付属しているはずです
。DE

1
申し訳ありませんが、私はOPではありません。報酬を設定するだけです。@Olive Twistは自分の質問に回答済みのマークを付ける必要があります。
グルタニメート2012年

2

それを行う「正しい」方法が見つからない場合は、次のようなブルー​​トフォースメソッドを使用できます。

  1. 1つのデスクトップ環境ですべてのデフォルトを設定する
  2. cd $HOME;ls -Rlrt | less更新されたファイルを見つけるために、たとえば、それらの選択が保存された場所などを実行します
  3. デスクトップ環境(バックアップ)ごとにこれらのファイルの個別のコピーを作成します。
  4. デスクトップ環境ごとに繰り返します
  5. そのデスクトップ環境に切り替える直前に適切なセットを適切な場所にコピーします(おそらくログアウトしてから再度ログインして、新しいデスクトップ環境を選択します)。

うまくいけば、デスクトップ環境に構成ファイルの取得元を指示するオプションを使用して、シェル環境からデスクトップ環境を切り替える方法があります。それは常にファイルを移動するよりはきれいかもしれませんが、私はそれがどのように機能するか、またはどのように機能するかを研究していません。

別のはるかに簡単な解決策ですが、あなたが求めたものとは正確には異なります。

  1. デスクトップ環境ごとに個別のユーザーアカウントを作成する
  2. これらのユーザー用に新しいグループを作成します
  3. これらすべてのユーザーを新しいグループに追加します
  4. これらすべてのユーザーからアクセスする必要がある一般的なデータファイルを作成します-rwxrwxr-xchmod 775 list-of-files-and-directories)。そうすれば、「ユーザー」の別の1人が最初に書き込んだファイルに書き込もうとしたときに、権限エラーが発生しなくなります。

    • これらのすべてのユーザーで同じファイルを使用する場合は、1人のユーザーでファイルを作成し、残りのファイルにシンボリックリンクすることができます。これは機能するはずですが、いずれかを変更したときに、そのように設定されていることを覚えておく必要があります。たとえば、それらの1つを編集し、エディターがバックアップファイルを作成した場合、そのバックアップファイルは、編集した場所にのみ保存され、他のすべてのユーザーアカウントには保存されません。

ユーザーごとのファイルの関連付けが保存されている場所に注意するかもしれません~/.local/share/mime/
RobotHumans
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.