Standardanwendung xdg-open auf Terminalprogramm festlegen

Standardanwendung xdg-open auf Terminalprogramm festlegen

Ist es möglich, Terminal Vim mit xdg-open zu verwenden?

Ich habe keinen GUI-Texteditor, da ich vim nur über das Terminal verwende. (gvim ist mir auch ziemlich egal.) Kann ich xdg-open anweisen, ein Terminal zu öffnen und dann vim mit der ausgewählten Datei zu öffnen?

Danke.

Antwort1

Exportieren Sie in Ihre .bashrc- oder .zshrc-Datei, je nachdem, ob Sie bash oder zsh verwenden, diese beiden Umgebungsvariablen:

export EDITOR=vim
export VISUAL=vim

Darüber hinaus möchten Sie vim möglicherweise mit dem MIME-Typ von Textdateien verknüpfen:

xdg-mime default vim.desktop text/plain

Jetzt müssen Sie eine vim.desktop-Datei erstellen /usr/share/applications, die den gewünschten Terminalemulator ausführen und vim öffnen sollte.

Antwort2

Ich muss eine neue Antwort hinzufügen, auch wenn mein Kommentar die Antwort nur ergänzt, indemAbonnieren, da in den Kommentaren kein Code eingerückt werden kann.

Der Inhalt vim.desktopkann etwa wie folgt aussehen:

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

Ich ziehe es vor, es unter zu platzieren ~/.local/share/applications.

Antwort3

Kurz zusammengefasst

$ xdg-mime default vim.desktop <MIMETYPE>

Oder bearbeiten ~/.config/mimeapps.list.
MIMETYPE ist die Ausgabe von$ xdg-mime query filetype <interested-file>


Wenn Sie eine Desktop-Umgebung (KDE, GNOME, LXQT usw.) verwenden, sollten Sie die Dokumentation Ihrer DE zu Rate ziehen. Aber es gibt dieXDG-Standardzum Festlegen von Standardanwendungen für bestimmte MIME-Typen. MIME-Typen sind eine Möglichkeit, einen Dateityp von einem anderen zu unterscheiden, siehe Wikipedia, oderErzwiki. Beispielsweise gibt es text/htmlden MIME-Typ für *.htmlDateien und text/plainfür *.txtDateien. Den MIME-Typ können Sie mit bestimmen $xdg-mime query filetype <file_you_interested>.

Mime-Typen werden verwendet, um Anwendungen mit Dateien zu verknüpfen, die diese Anwendungen öffnen sollen.
Das Öffnen ~/.config/mimeapps.listsieht auf meinem Rechner etwa so aus:

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

[Default Applications]Dem Abschnitt diese Zeilen hinzufügen

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

(Fügen Sie weitere MIME-Typen hinzu, falls Sie sie benötigen)

vim.desktopAuf meinem Rechner befindet sich die Datei /usr/share/applicationsmit folgendem Inhalt:

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

(Es gibt tatsächlich viele Übersetzungen von Namen und Kommentaren, aber sie spielen hier keine Rolle.)

Schauen Sie sich die Zeile an Terminal=true.

Gemäß den Regeln in der XDG Desktop Entry Specification besagt diese Zeile, dass der Launcher den Terminalemulator öffnen soll und dann in diesem Terminalfenster Ihre App geöffnet werden soll ( ExecZeile). Gut, oder?


Es gibt jedoch einefünf Jahre alter Fehler in xdg-openund xdg-open- TerminalTaste ignorieren, da keine Spezifikation für den Standard-Terminalemulator vorhanden ist.

(Sie versuchten, aber im Jahr 2020 gibt es noch keine Spezifikation.)

Wenn Sie also DE nicht verwenden, beachtet xdg-open die Desktop Entry Specification nicht für Sie. Die Person, die den Fehler gemeldet hat, hat einen Patch erstellt (der leider ignoriert wurde), der die Variable $TERMINAL überprüft und den Terminalemulator öffnet, sodass Sie Ihr /usr/bin/xdg-open (oder $ which xdg-open) patchen können.

Wenn Sie das Skript nicht selbst ändern möchten xdg-open, können Sie einige Workarounds verwenden:

  1. Sie können (sofern in Ihrem System gvim.desktopvorhanden ) oder (qt-Frontend für ) verwenden .gvimnvim-qt.desktopneovim

  2. Sie können eine Datei mit einem Namen wie my-vim.desktopdem folgenden Inhalt erstellen:

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

Und platzieren Sie es in ~/.local/share/applications.
Den Befehl zum Ausführen Ihres Terminals erhalten Sie von der Manualpage des bevorzugten Terminals (z. B. gnome-terminal -e).
Weitere Einzelheiten finden Sie in den Desktop-Eintrag-Spezifikationen.

  1. Sie können den xdg-openQuellcode irgendwie lesen und Ihr System so optimieren, dass xdg-openes denkt, Sie verwenden DE und DE-spezifische Tools aufruft, aber ich finde das seltsam.

Nützliche Links:
XDG-Mime-Handbuchseite -https://linux.die.net/man/1/xdg-mime
Arch-Wiki über XDG-MIME-Typen -https://wiki.archlinux.org/index.php/XDG_MIME_Applications
Arch-Wiki zum XDG-Desktop-Eintrag -https://wiki.archlinux.org/index.php/Desktop_entries#Application_entry
xdg-open-Problem -https://gitlab.freedesktop.org/xdg/xdg-utils/-/issues/84

verwandte Informationen