Jak zmienić domyślny terminal do wykonywania plików .desktop?

May 11 2020

Próbowałem domyślnie uruchomić vim z alacritty. Ustawiłem już alacritty jako domyślny emulator terminala, aw moim vim.desktop zmieniłem się exec=vim %Fz exec=alacritty -e vim %F. Problem polega na tym, że kiedy otwieram plik, najpierw wykonuje polecenie w terminalu gnome, a następnie uruchamia vima w trybie alacritty, chodzi o to, że terminal gnome pozostaje otwarty. Próbowałem też stworzyć skrypt:

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

to w ogóle nie działa. Nie wiem, co jeszcze robić i nie mogę znaleźć niczego w Internecie. Z góry dziękuję!

Czy można zmienić domyślny terminal, który uruchamia Exec=polecenie? tak, że po prostu pisząc Exec=vim %F, uruchomiłoby to szybko

Odpowiedzi

4 Wonky May 11 2020 at 14:05

muru pomogło mi wyjaśnić, co się dzieje, dziękuję! Problem polegał na tym, że mój plik .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++;

Miałem argument Terminal=true. To, co robi to, że wykonuje Exec=polecenie w terminalu, otwierając terminal, aby to zrobić. Jeśli to ustawisz Terminal=false, uniemożliwi otwieranie terminala i po prostu wykona polecenie bez otwierania terminala.

OliverLew Jun 29 2020 at 16:31

Edycja: to czasami nie działa, nie wiem, co kontroluje, który emulator terminala jest używany podczas otwierania vima.

Właśnie znalazłem inne obejście tego problemu: utwórz łącze symboliczne o nazwie xtermw twoim $PATHdo własnego emulatora terminala. Nie mogę jednak zagwarantować, że zadziała to dla wszystkich.

Zaletą tego obejścia jest to, że nie trzeba zmieniać żadnych plików pulpitu. Wszystkie .desktop z Terminal=truebędą korzystać z nowego emulatora terminala.


Podczas próby wykonania wpisu na pulpicie za pomocą exo-open(podobnie jak xdg-openz xfce) pojawia się komunikat ostrzegawczy

sh: line 0: exec: xterm: not found

Więc myślę, że xtermjest na stałe zakodowany w programie do otwierania plików .desktop. Następnie próbowałem utworzyć ten link symboliczny

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

i działa doskonale.

Jednak faktyczne polecenie, które powstało, jest prawdopodobnie oparte na xtermargumentach, więc działają tylko emulatory terminala, które używają tego samego argumentu do określenia polecenia startowego. Jednym z kontrprzykładów jest to termite, że wymaga cytowania całego polecenia w -eopcji.