將預設的 xdg-open 應用程式設定為終端程式

將預設的 xdg-open 應用程式設定為終端程式

是否可以將終端機 vim 與 xdg-open 一起使用?

我沒有 GUI 文字編輯器,因為我只透過終端使用 vim。 (我也不太關心 gvim。) 是否可以告訴 xdg-open 開啟終端,然後使用所選檔案開啟 vim?

謝謝。

答案1

在 .bashrc 或 .zshrc 中,根據您分別使用 bash 或 zsh,匯出這兩個環境變數:

export EDITOR=vim
export VISUAL=vim

此外,您可能希望將 vim 與文字檔案的 mimetype 相關聯:

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-type 是一種區分一種文件類型和另一種文件類型的方法,請參閱維基百科,或者維基百科。例如,有text/html用於檔案的mime-type *.html,以及text/plain用於*.txt檔案的mime-type。您可以使用 確定 mime-type $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 桌面入口規格中的規則,此行表示啟動器應開啟終端模擬器,然後應在此終端視窗中開啟您的應用程式(Exec行)。很好,是嗎?


然而,有一個xdg-open 五年前的錯誤和 xdg-open 忽略Terminal鍵,因為沒有預設終端模擬器的規格。

他們嘗試了,但 2020 年還沒有規範。 )

因此,如果您不使用 DE,xdg-open 不會為您遵守桌面輸入規格。填補 bug 的人創建了一個補丁(遺憾的是,補丁被忽略了),該補丁查看 $TERMINAL 變數並打開終端模擬器,因此您可以修補 /usr/bin/xdg-open (或$ which xdg-open)。

如果您不想xdg-open自己更改腳本,可以使用一些解決方法:

  1. 您可以使用gvim.desktop(如果您gvim的系統中有)或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-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 Desktop 條目的 Arch wiki -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
xdg-開放問題 -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84

相關內容