デフォルトのテキストエディタでプログラムでファイルを開く

デフォルトのテキストエディタでプログラムでファイルを開く

私はプログラムを書いていますが、テキストエディタで特定のファイルを開く機能を実装する必要があります。デフォルトでは、ファイル形式には別の接続(プログラム自体と関連付けられている)があるため、呼び出しはxdg-open $file効果がありません。一般的には、端末テキストエディタが含まれているので、使用するのが最適です。$EDITORこれが最初の選択である場合は、GUIテキストエディタを開きたいです。端末を開くための基本的な端末エミュレータを見つける方法は不明です$EDITOR

クエリ(おそらくGUI)エディタを使用でき、xdg-mime query default text/plainファイルが提供されますが、.desktop実際に実行する方法がわかりません。特に、ここにファイルを含めることができるため、Terminal=trueデフォルトの端末が何であるかを判断する問題が再び発生します。 。

明らかに、このプログラムはスクリプトのようなものではありません。すでに端末で実行中。これはGUIアプリケーションなので、端末エディタを起動するには、基本端末が何であるかを知る必要があります。

それでは、基本(おそらくGUI)テキストエディタでプログラムでファイルを開く最良の方法は何ですか?

答え1

*.desktop通話で受信するファイルは、次の2つのxdg-mime query default text/plain場所のいずれかにあります。

$HOME/.local/share/applications/
/usr/share/applications/

したがって、そこで見つけた行を解析し、次のすべての引数をExec=渡して実行する必要があります。

$(grep Exec /usr/share/applications/seahorse.desktop | cut -d= -f2) "$@"

Debian に似たディストリビューションでデフォルトの端末エミュレータを決定するには、次のコマンドを実行し、出力を同様に解析してパスを取得できます。

update-alternatives --query x-terminal-emulator

または、必要なコマンドを直接実行してみてください。

x-terminal-emulator -e "your command here"

ディストリビューションを独立して作成する必要がある場合は、各DEが構成の保存方法によって異なるように見えるため、デスクトップ環境の推測を実装する必要があります。一度見てみたいかもしれませんxdg端末このコードはxdgユーティリティパッケージの一部であり、デフォルトのターミナル実行を担当します(ただし、何らかの理由で配布されるわけではありません)。

関連情報