Wie ändere ich das Standardterminal für die Ausführung von .desktop-Dateien?

May 11 2020

Ich habe versucht, vim mit alacritty als Standard auszuführen. Ich habe alacritty Set als Standard - Terminal - Emulator bereits, und in meinem vim.desktop Ich änderte exec=vim %Fmit exec=alacritty -e vim %F. Das Problem ist, dass beim Öffnen einer Datei zuerst der Befehl im Gnome-Terminal ausgeführt und dann vim in alacritty gestartet wird. Das Gnome-Terminal bleibt also geöffnet. Ich habe auch versucht, ein Skript zu erstellen:

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

das funktioniert überhaupt nicht. Ich weiß nicht, was ich sonst tun soll und kann online nichts finden. Danke im Voraus!

Ist es möglich, das Standardterminal zu ändern, mit dem der Exec=Befehl ausgeführt wird? so dass nur durch das Schreiben Exec=vim %Fes in alacritty laufen würde

Antworten

4 Wonky May 11 2020 at 14:05

Muru half mir zu klären, was los war, danke! Das Problem war, dass meine .desktop-Datei:

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

Hatte das Argument Terminal=true. Dies führt dazu, dass der Exec=Befehl in einem Terminal ausgeführt wird und dazu ein Terminal geöffnet wird. Wenn Sie dies einstellen, Terminal=falsewird verhindert, dass sich ein Terminal öffnet, und es wird nur der Befehl ausgeführt, ohne das Terminal zu öffnen.

OliverLew Jun 29 2020 at 16:31

Bearbeiten: Dies funktioniert manchmal nicht. Ich weiß nicht, was steuert, welcher Terminalemulator beim Öffnen von vim verwendet wird.

Ich habe gerade eine andere Lösung für dieses Problem gefunden: Erstellen Sie einen xtermin Ihrem Namen genannten Symlink $PATHzu Ihrem eigenen Terminalemulator. Ich kann jedoch nicht garantieren, dass dies für alle funktioniert.

Der Vorteil dieser Problemumgehung besteht darin, dass Sie keine Desktop-Eintragsdateien ändern müssen. Alle .desktop mit Terminal=trueverwenden den neuen Terminalemulator.


Beim Versuch, einen Desktop-Eintrag mit exo-open(ähnlich wie xdg-openbei xfce) auszuführen, wird eine Warnmeldung angezeigt

sh: line 0: exec: xterm: not found

Ich denke, es xtermist im Programm fest codiert, um .desktop-Dateien zu öffnen. Dann habe ich versucht, diesen Symlink zu erstellen

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

und es funktioniert perfekt.

Der tatsächlich erzeugte Befehl basiert jedoch wahrscheinlich auf xtermden Argumenten von ', sodass nur die Terminalemulatoren funktionieren, die dasselbe Argument verwenden, um den Startbefehl anzugeben. Ein Zählerbeispiel ist termite, da der gesamte Befehl in der -eOption in Anführungszeichen gesetzt werden muss .