Как изменить терминал по умолчанию для выполнения файлов .desktop?
Я пытался запустить vim с alacritty по умолчанию. Я уже установил alacritty в качестве эмулятора терминала по умолчанию, и в моем vim.desktop я изменил его exec=vim %Fс помощью exec=alacritty -e vim %F. Проблема в том, что когда я открываю файл, он сначала выполняет команду в терминале gnome, а затем запускает vim в режиме реального времени, дело в том, что терминал gnome остается открытым. Я также пробовал создать сценарий:
#!/bin/bash
alacritty -e vim & disown | exit
это вообще не работает. Я не знаю, что еще делать, и ничего не могу найти в Интернете. Заранее спасибо!
Можно ли изменить терминал по умолчанию, запускающий Exec=команду? так что просто написав Exec=vim %F, он запускал
Ответы
Муру помог мне прояснить, что происходит, спасибо! Проблема заключалась в том, что мой файл .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++;
Был аргумент Terminal=true. Он выполняет Exec=команду в терминале, открывая для этого терминал. Если вы установите Terminal=falseэто, это предотвратит открытие любого терминала, и он просто выполнит команду, не открывая терминал.
Изменить: иногда это не работает, я не знаю, что контролирует, какой эмулятор терминала используется при открытии vim.
Я только что нашел другой способ решения этой проблемы: создайте символическую ссылку, указанную xtermв $PATHвашем собственном эмуляторе терминала. Однако я не могу гарантировать, что это сработает для всех.
Преимущество этого решения заключается в том, что вам не нужно изменять какие-либо файлы записей рабочего стола. Все .desktop Terminal=trueбудут использовать новый эмулятор терминала.
При попытке выполнить запись на рабочем столе с помощью exo-open(аналогично xdg-open, из xfce) появляется предупреждающее сообщение
sh: line 0: exec: xterm: not found
Так что, я думаю, xtermв программе жестко запрограммировано открытие файлов .desktop. Затем я попытался сделать эту символическую ссылку
ln -s /usr/bin/st ~/.local/bin/xterm
и работает отлично.
Однако фактическая порожденная команда, вероятно, основана на xtermаргументах, поэтому работают только эмуляторы терминала, которые используют тот же аргумент для указания команды запуска. Один встречный пример: termiteон требует, чтобы в -eопции была заключена вся команда .