Defina o aplicativo xdg-open padrão para o programa de terminal

Defina o aplicativo xdg-open padrão para o programa de terminal

É possível usar o terminal vim com xdg-open?

Não tenho um editor de texto GUI porque só uso o vim por meio do terminal. (Eu também não me importo muito com o gvim.) É possível dizer ao xdg-open para abrir um terminal e depois abrir o vim com o arquivo selecionado?

Obrigado.

Responder1

Em seu .bashrc ou .zshrc, dependendo se você usa bash ou zsh respectivamente, exporte estas duas variáveis ​​de ambiente:

export EDITOR=vim
export VISUAL=vim

Além disso, você pode querer associar o vim ao tipo MIME dos arquivos de texto:

xdg-mime default vim.desktop text/plain

Agora você terá que criar um arquivo vim.desktop em /usr/share/applications, que deverá executar o emulador de terminal desejado, abrindo o vim.

Responder2

Tenho que adicionar uma nova resposta, mesmo que meu comentário apenas complete a respostaThiagowfx, porque nos comentários você não pode recuar o código.

O conteúdo de vim.desktoppode ser algo assim:

[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;

Eu prefiro colocar isso embaixo ~/.local/share/applications.

Responder3

DR

$ xdg-mime default vim.desktop <MIMETYPE>

Ou edite ~/.config/mimeapps.list.
MIMETYPE é a saída de$ xdg-mime query filetype <interested-file>


Se você estiver usando algum ambiente de trabalho (KDE, GNOME, LXQT, etc), consulte a documentação do seu DE. Mas existe oPadrão XDGpara definir aplicativos padrão para tipos MIME específicos. Mime-type é uma forma de distinguir um tipo de arquivo de outro, veja na Wikipedia, ouarquiwiki. Por exemplo, existe text/htmlo tipo MIME para *.htmlarquivos e text/plainpara *.txtarquivos. Você pode determinar o tipo mime com $xdg-mime query filetype <file_you_interested>.

Os tipos MIME são usados ​​para vincular aplicativos a arquivos, que esses aplicativos devem abrir.
Abra ~/.config/mimeapps.list, que se parece com isto na minha máquina:

[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;

Adicione à [Default Applications]seção essas linhas

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

(Adicione outros tipos MIME, se precisar deles)

vim.desktopestá o arquivo /usr/share/applicationscom o seguinte conteúdo na minha máquina:

[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++;

(Realmente, há muitas traduções de nomes e comentários, mas eles não importam aqui)

Veja a linha Terminal=true.

Pelas regras da especificação de entrada do XDG Desktop, esta linha diz que o inicializador deve abrir o emulador de terminal, e então nesta janela do terminal deve ser aberto seu aplicativo ( Execlinha). Tudo bem, sim?


No entanto, existe umabug de cinco anos no xdg-opene xdg-open ignore Terminalkey porque não há especificação para o emulador de terminal padrão.

(Eles tentaram, mas em 2020 ainda não há especificações. )

Portanto, se você não usa DE, o xdg-open não respeita a especificação de entrada da área de trabalho para você. A pessoa que preencheu o bug criou um patch (que foi ignorado, infelizmente), que analisa a variável $TERMINAL e o emulador de terminal aberto, para que você possa corrigir seu /usr/bin/xdg-open (ou $ which xdg-open).

Se você não quiser alterar xdg-openo script sozinho, poderá usar algumas soluções alternativas:

  1. Você pode usar gvim.desktop(se tiver gvimem seu sistema) ou nvim-qt.desktop(qt front-end para neovim).

  2. Você pode criar um arquivo com algum nome como my-vim.desktopo seguinte conteúdo:

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

E coloque-o dentro ~/.local/share/applications.
Comando para executar seu terminal você pode obter na página de manual do terminal preferido (por exemplo, gnome-terminal -e).
Mais detalhes em Especificações de entrada para desktop.

  1. De alguma forma, você pode ler o xdg-opencódigo-fonte e ajustar seu sistema, que xdg-openpensará que você está usando DE e chamará ferramentas específicas de DE, mas acho estranho.

Links úteis:
página de manual do XDG-mime -https://linux.die.net/man/1/xdg-mime
Arch wiki sobre tipos mime XDG -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
Arch wiki sobre a entrada do XDG Desktop -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
problema xdg-open -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84

informação relacionada