¿Cómo cambio el terminal predeterminado para ejecutar archivos .desktop?

May 11 2020

He estado intentando ejecutar vim con alacritty por defecto. Ya he configurado alacritty como mi emulador de terminal predeterminado, y en mi vim.desktop cambié exec=vim %Fcon exec=alacritty -e vim %F. El problema es que cuando abro un archivo primero ejecuta el comando en la terminal gnome y luego lanza vim en alacritty, lo que pasa es que la terminal gnome permanece abierta. También he intentado crear un script:

#!/bin/bash
alacritty -e vim & disown | exit

esto no funciona en absoluto. No sé qué más hacer y no encuentro nada en línea. ¡Gracias por adelantado!

¿Es posible cambiar la terminal predeterminada que ejecuta el Exec=comando? para que con solo escribirlo Exec=vim %Flo ejecutara con prontitud

Respuestas

4 Wonky May 11 2020 at 14:05

muru me ayudó a aclarar lo que estaba pasando, ¡gracias! El problema era que mi archivo .desktop:

[Desktop Entry]
Name=Vim
GenericName=Text Editor
Comment=Edit text files
Comment[es]=Edita archivos de texto
TryExec=vim
Exec=alacritty -e 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++;

Tenía la discusión Terminal=true. Esto lo que hace es que ejecuta el Exec=comando en una terminal, abriendo una terminal para hacerlo. Si configura Terminal=falseesto, evitará que se abra cualquier terminal y simplemente ejecutará el comando sin abrir el terminal.

OliverLew Jun 29 2020 at 16:31

Editar: esto no funciona a veces, no sé qué está controlando qué emulador de terminal se usa cuando abres vim.

Acabo de encontrar otra solución para este problema: cree un enlace simbólico con el nombre xtermen $PATHsu propio emulador de terminal. Sin embargo, no puedo garantizar que esto funcione para todos.

La ventaja de esta solución alternativa es que no es necesario cambiar ningún archivo de entrada del escritorio. Todos los archivos .desktop Terminal=trueutilizarán el nuevo emulador de terminal.


Al intentar ejecutar una entrada de escritorio con exo-open(similar a xdg-open, de xfce), aparece un mensaje de advertencia

sh: line 0: exec: xterm: not found

Así que supongo que xtermestá codificado en el programa para abrir archivos .desktop. Entonces traté de hacer este enlace simbólico

ln -s /usr/bin/st ~/.local/bin/xterm

y funciona perfectamente.

Sin embargo, el comando real generado probablemente se basa en xtermlos argumentos de ', por lo que solo funcionan los emuladores de terminal que usan el mismo argumento para especificar el comando de inicio. Un ejemplo contrario es termite, ya que requiere que todo el comando se cite en la -eopción.