Linuxでは、デフォルトのテキストエディタ、ターミナルなどをどのように決定できますか?
ディストロによって異なりますか?
私は以前、プログラム的にかなり醜い方法でリストにアクセスしましたが、それが最善の方法ではないと確信しています。オプションはdefaults.listというファイルに保存されます(これは一般的に当てはまると思います)。場所はあまり一般的ではないと思いますが、ubuntuシステムの/ usr / share / Applications /にあると思いますが、他の場所に表示されていると思います。次に、それをテキストファイルとして扱いました。
解決順序は$EDITOR
-> editor
->コンソールエディターの事前定義されたリストです。Debian / Ubuntuでは、sensible-editor
(およびsensible-browser
とsensible-pager
)が適切な環境変数の検索を含む検索を行います。同様の変数は$PAGER
、、、$SHELL
です$BROWSER
。ファイルの関連付けを検索するには、を使用できますxdg-open
。
これはubuntu/gnomeで機能します。
>>> query_lines = subprocess.check_output(['update-alternatives',
'--query',
'gnome-text-editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/usr/bin/gedit'
gnomeを使用していない場合は、少なくともコマンドラインエディターを入手できます。
>>> query_lines = subprocess.check_output(['update-alternatives',
... '--query',
... 'editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/bin/nano'
ユーザーごとの環境変数はそれを示しています。
ただし、これはコマンドラインソフトウェアには有効ですが、通常、デスクトップ環境では独自の(内部)変数が使用されます。
また、Pythonでは、を使用して環境変数を読み取ることができますos.getenv
。
デフォルトのエディタやターミナルの概念は意味がないと思います。$EDITOR
エディターの場合、定義時に使用する規則があります。
Debianおよび関連(Ubuntu、Mintなど)では、システムのデフォルトのようなパスが/usr/bin/editor
あり、/usr/bin/x-terminal-emulator
(のシンボリックリンクを介して/etc/alternatives/
)シンボリックリンクされています。
Dacavの回答も参照してください
@bowlerの答えからヒントを得て、純粋にbashします。
editor=$(grep "text/plain" -r -i -I /usr/share/applications/defaults.list | awk -F';' '{print $1}' | awk -F'.desktop' '{print $1}' | awk -F'=' '{print $2}')