デフォルトのxdg-openアプリケーションをターミナルプログラムとして設定する

デフォルトのxdg-openアプリケーションをターミナルプログラムとして設定する

xdg-openでターミナルvimを使用できますか?

端末を介してのみvimを使用するため、GUIテキストエディタはありません。 (私はgvimもあまり気にしません。)xdg-openに端末を開き、選択したファイルでvimを開くように指示できますか?

ありがとうございます。

答え1

.bashrc または .zshrc でそれぞれ bash または zsh を使用するかどうかに応じて、次の 2 つの環境変数をエクスポートします。

export EDITOR=vim
export VISUAL=vim

また、vimをテキストファイルのMIMEタイプに関連付けることもできます。

xdg-mime default vim.desktop text/plain

/usr/share/applicationsこれで、必要な端末エミュレータを実行するvim.desktopファイルを作成してvimを開く必要があります。

答え2

私のコメントが次のステップまで回答を完了したとしても、新しい回答を追加する必要があります。ティアゴブケスこれは、コメント内でコードをインデントできないためです。

内容はvim.desktop次のようになります。

[Desktop Entry]
Name=Vim Text Editor
Comment=Edit text files
Exec=vim
Terminal=true
Type=Application
Icon=terminal
Categories=Utility;TextEditor;
StartupNotify=true
MimeType=text/plain;

私はそれを置くことを好む~/.local/share/applications

答え3

長い話を短く

$ xdg-mime default vim.desktop <MIMETYPE>

またはMIMETYPEの出力は次のとおりです~/.config/mimeapps.list
$ xdg-mime query filetype <interested-file>


特定のデスクトップ環境(KDE、GNOME、LXQTなど)を使用している場合は、DEのマニュアルを参照する必要があります。しかし、一つあります。XDG規格特定のMIMEタイプのデフォルトアプリケーションを設定するために使用されます。 MIME形式は、あるファイル形式を他のファイル形式と区別する方法です。 Wikipediaをご覧ください。ウィキペディア。たとえば、text/htmlファイルのMIMEタイプ*.htmlとファイルtext/plainのMIMEタイプがあります。*.txtを使用してMIMEタイプを決定できます$xdg-mime query filetype <file_you_interested>

MIMEタイプは、アプリケーションが開く必要があるファイルとアプリケーションを関連付けるために使用されます。私のコンピュータで
開くと、~/.config/mimeapps.list次のようになります。

[Default Applications]
x-scheme-handler/http=firefox.desktop
...
inode/directory=org.gnome.Nautilus.desktop

[Added Associations]
application/x-shellscript=nvim-qt.desktop;
...
application/pdf=firefox.desktop;

[Default Applications]セクションに次の行を追加します。

text/plain=vim.desktop
text/markdown=vim.desktop
text/html=vim.desktop

(必要に応じて他の無言のタイプを追加してください)

vim.desktopマイコンピュータのファイルには、/usr/share/applications次の内容が含まれています。

[Desktop Entry]
Name=Vim
TryExec=vim
Exec=vim %F
Terminal=true
Type=Application
Keywords=Text;editor;
Icon=gvim
Categories=Utility;TextEditor;
StartupNotify=false
MimeType=text/english;text/plain;text/x-makefile;text/x-c++hdr;text/x-c++src;text/x-chdr;text/x-csrc;text/x-java;text/x-moc;text/x-pascal;text/x-tcl;text/x-tex;application/x-shellscript;text/x-c;text/x-c++;

(名前やコメントの翻訳が多いのは本当ですが、ここではそれは重要ではありません)

ラインを見てくださいTerminal=true

XDG Desktop Portal仕様の規則に従って、この行はランチャーがターミナルエミュレータを開き、アプリケーション(行Exec)をこのターミナルウィンドウで開く必要があることを示します。とても良い、ハァッか。


しかし、一つがあります5年前 xdg-open のバグそして、xdg-openはTerminalデフォルトの端末エミュレータの仕様がないため、キーを無視します。

彼らは努力したしかし、2020年には仕様はありません。 )

したがって、DEを使用しない場合、xdg-openはデスクトップ入力仕様を尊重しません。エラーを書いた人は、$ TERMINAL変数を見て/ usr / bin / xdg-open(または$ which xdg-open)をパッチできるようにターミナルエミュレータを開くパッチ(残念ながら無視)を作成しました。

スクリプトを直接変更したくない場合は、xdg-openいくつかの回避策があります。

  1. gvim.desktopgvimシステムにいる場合)またはnvim-qt.desktop(qt front-end for)を使用できますneovim

  2. my-vim.desktopたとえば、次の内容を含む名前のファイルを生成できます。

[Desktop Entry]
Type=Application
Name=MyVim
Exec=<COMMAND TO RUN YOUR TERMINAL> vim %F
Terminal=false
Icon=gvim
Categories=Utility;TextEditor

目的の端末(例)のマニュアルページから端末を実行するコマンドを取得できます~/.local/share/applications。詳細については、デスクトップポータルの仕様を参照してください。
gnome-terminal -e

  1. xdg-openどういうわけかソースコードを読んでシステムを調整することができ、xdg-openDEを使用してDE固有のツールを呼び出すと思うかもしれませんが、私の考えには奇妙です。

便利なリンク:
XDG-mimeのマニュアルページ -https://linux.die.net/man/1/xdg-mime
XDG MIMEタイプのアーチウィキ -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
XDG Desktop アイテムの Arch wiki -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
xdg - 公開問題 -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84

関連情報