![デフォルトの xdg-open アプリケーションをターミナルプログラムに設定する](https://rvso.com/image/36030/%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%AE%20xdg-open%20%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%92%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E3%81%AB%E8%A8%AD%E5%AE%9A%E3%81%99%E3%82%8B.png)
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
ここで、 に vim.desktop ファイルを作成し/usr/share/applications
、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>
または編集します~/.config/mimeapps.list
。MIMETYPE
は次の出力です。$ xdg-mime query filetype <interested-file>
デスクトップ環境(KDE、GNOME、LXQTなど)を使用している場合は、DEのドキュメントを参照してください。ただし、XDG 標準特定のMIMEタイプにデフォルトのアプリケーションを設定する。MIMEタイプは、あるファイルタイプを別のファイルタイプと区別する方法です。Wikipediaを参照するか、アーチウィキたとえば、ファイルには 、ファイルには というtext/html
mime-typeがあります。 で mime-type を判別できます。*.html
text/plain
*.txt
$xdg-mime query filetype <file_you_interested>
MIME タイプは、アプリケーションと、これらのアプリケーションが開くファイルとをリンクするために使用されます。私のマシンでは、
Open~/.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
(必要な場合は別の MIME タイプを追加してください)
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 デスクトップ エントリ仕様の規則によれば、この行は、ランチャーがターミナル エミュレーターを開き、このターミナル ウィンドウでアプリ (Exec
行) を開く必要があることを示しています。問題ありませんか?
しかし、xdg-open の 5 年前のバグTerminal
デフォルトのターミナル エミュレーターの指定がないため、xdg-open はキーを無視します。
(彼らは試したただし、2020 年現在ではまだ仕様は存在しません。
したがって、DE を使用していない場合は、xdg-open はデスクトップ エントリ仕様を尊重しません。バグを修正した人がパッチを作成しました (残念ながら無視されました)。このパッチは $TERMINAL 変数を調べてターミナル エミュレーターを開きます。そのため、/usr/bin/xdg-open (または$ which xdg-open
) にパッチを適用できます。
自分でスクリプトを変更したくない場合はxdg-open
、いくつかの回避策を使用できます。
(システムに
gvim.desktop
インストールされている場合) または(の qt フロントエンド)を使用できます。gvim
nvim-qt.desktop
neovim
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
) から取得できます。
詳細については、デスクトップ エントリ仕様を参照してください。
- 何らかの方法で
xdg-open
ソース コードを読み取ってシステムを調整し、xdg-open
DE を使用していると認識させて DE 固有のツールを呼び出すことはできますが、それは奇妙だと思います。
役に立つリンク:
XDG-mime マニュアルページ -https://linux.die.net/man/1/xdg-mime
XDG MIME タイプに関する Arch Wiki -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
XDG デスクトップ エントリに関する Arch wiki -https://wiki.archlinux.org/index.php/Desktop_entries#アプリケーションエントリ
xdg-オープン問題 -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84