Establecer la aplicación xdg-open predeterminada en el programa terminal

Establecer la aplicación xdg-open predeterminada en el programa terminal

¿Es posible utilizar terminal vim con xdg-open?

No tengo un editor de texto GUI porque solo uso vim a través de la terminal. (Tampoco me importa mucho gvim). ¿Es posible decirle a xdg-open que abra una terminal y luego abra vim con el archivo seleccionado?

Gracias.

Respuesta1

Ya sea en su .bashrc o .zshrc, dependiendo de si usa bash o zsh respectivamente, exporte estas dos variables de entorno:

export EDITOR=vim
export VISUAL=vim

Además, es posible que desees asociar vim al tipo MIME de archivos de texto:

xdg-mime default vim.desktop text/plain

Ahora tendrás que crear un archivo vim.desktop en /usr/share/applications, que deberá ejecutar el emulador de terminal que desees, abriendo vim.

Respuesta2

Tengo que agregar una nueva respuesta, incluso si mi comentario solo completa la respuesta althiagowfx, porque en los comentarios no se puede sangrar el código.

El contenido de vim.desktoppuede ser algo como esto:

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

Prefiero ponerlo debajo ~/.local/share/applications.

Respuesta3

TL;DR

$ xdg-mime default vim.desktop <MIMETYPE>

O editar ~/.config/mimeapps.list.
MIMETYPE es la salida de$ xdg-mime query filetype <interested-file>


Si está utilizando algún entorno de escritorio (KDE, GNOME, LXQT, etc.), debe consultar la documentación de su DE. Pero existe elestándar XDGpara configurar aplicaciones predeterminadas para tipos mime específicos. El tipo Mime es una forma de distinguir un tipo de archivo de otro, ver en Wikipedia, oarchwiki. Por ejemplo, existe text/htmlel tipo mime para *.htmlarchivos y text/plainpara *.txtarchivos. Puede determinar el tipo mime con $xdg-mime query filetype <file_you_interested>.

Los tipos Mime se utilizan para vincular aplicaciones con archivos que estas aplicaciones deberían abrir.
Abierto ~/.config/mimeapps.listque se parece a esto en mi 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;

Añadir a la [Default Applications]sección estas líneas

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

(Agregue otros tipos mime, si los necesita)

vim.desktopes el archivo /usr/share/applicationscon el siguiente contenido en mi 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 hay muchas traducciones de nombres y comentarios, pero aquí no importan)

Mira la línea Terminal=true.

Según las reglas de la Especificación de entrada de escritorio XDG, esta línea dice que el iniciador debe abrir el emulador de terminal y luego, en esta ventana de terminal, debe abrirse su aplicación ( Execlínea). Bien, ¿sí?


Sin embargo, hay unerror de cinco años en xdg-openy xdg-open ignorar Terminalla clave porque no hay ninguna especificación para el emulador de terminal predeterminado.

(Ellos intentaron, pero en 2020 aún no hay especificaciones. )

Entonces, si no usa DE, xdg-open no respeta las especificaciones de entrada de escritorio. La persona que llenó el error había creado un parche (que fue ignorado, lamentablemente), que analiza la variable $TERMINAL y abre el emulador de terminal, para que pueda parchear su /usr/bin/xdg-open (o $ which xdg-open).

Si no desea cambiar xdg-openel script usted mismo, puede utilizar algunas soluciones:

  1. Puede usar gvim.desktop(si lo tuviera gvimen su sistema) o nvim-qt.desktop(qt front-end para neovim).

  2. Puede crear un archivo con algún nombre como my-vim.desktopel siguiente contenido:

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

Y colóquelo en ~/.local/share/applications.
El comando para ejecutar su terminal se puede obtener desde la página del manual del terminal preferido (por ejemplo, gnome-terminal -e).
Más detalles en Especificaciones de entrada de escritorio.

  1. De alguna manera puedes leer el xdg-opencódigo fuente y modificar tu sistema para que xdg-openpiense que estás usando DE y llames a herramientas específicas de DE, pero creo que es extraño.

Enlaces útiles:
página del manual de XDG-mime -https://linux.die.net/man/1/xdg-mime
Arch wiki sobre los tipos mime XDG -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
Arch wiki sobre la entrada de XDG Desktop -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
Problema abierto xdg -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84

información relacionada