Wie lege ich eine neue xdg-open-Einstellung fest?

Antworten:

17

xdg-open prüft im Grunde genommen nur, welche Desktop-Umgebung Sie haben, und führt dann gnome-open, gvfs-open, xfce-open usw. aus. Siehe unten für spezifische Anweisungen zur Desktop-Umgebung ...

Gnom

Gnome benutzt das gnome-open-Programm, das gconf benutzt, um alles zu speichern. Zum Beispiel auf meinem Computer mit Ubuntu 10.10, auf dem gnome-open irc: // blah ausgeführt wird, wird xchat geöffnet, da xchat einen gconf-Einstellungs-Patch zum Hinzufügen eines irc: // -Handlers enthält.

gconf-editor zeigt irc mit xchat-konfiguration an

Dies zeigt, wie Gnome dies tut, mit gconf-Einstellungen in /desktop/gnome/url-handlers/. Siehe xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemasals Beispiel.

KDE

Für KDE sollten Sie sich die .protocol-Dateien in / usr / share / kde4 / services / ansehen, eine neue für Ihr neues Protokoll erstellen und in ~ / .kde / share / kde4 / services / ablegen, wenn es dann sehr nützlich ist Erwägen Sie, es dem Paket als Korrektur für andere Benutzer hinzuzufügen.

KDE verwendet kde-open oder kfmclient, je nachdem, was verfügbar ist und welche Version von KDE Sie haben.

XFCE

XFCE verwendet ein Programm namens exo-open. Dieses Programm kann es weder konfigurieren noch Uri-Handler hinzufügen. Das Durchsehen des Quellcodes zeigt, dass mit Desktop-Dateien nur drei Arten von Programmen angegeben werden. TerminalEmulator, WebBrowser und EmailClient.

Mit XFCE4 (und wahrscheinlich auch mit anderen) ist es möglich, xdg-open so zu konfigurieren, dass ein benutzerdefinierter Protokollhandler definiert wird. In einigen Fällen müssen Sie die folgenden Dateien erstellen / bearbeiten:

~ / .local / share / applications / protocolhandler.desktop ~ / .local / share / applications / mimeapps.list

Ein Beispiel für das Hinzufügen eines Handlers für das ed2k-Protokoll finden Sie unter stackexchange.com 2 .

Martin Owens -doctormo-
quelle
Kannst du erwähnen, wie das für alle offiziellen DEs geht?
Oxwivi
Nicht genau auf die Frage bezogen, aber können Sie das Verzeichnis am unteren Rand des Screenshots vollständig zitieren? Vielen Dank.
Oxwivi
4
xdg-open prüft im Grunde genommen nur, welche Desktop-Umgebung Sie haben, und führt dann gnome-open, gvfs-open, xfce-open usw. aus. --- Ich glaube nicht. Erstens sagt die Manpage das nicht und zweitens funktioniert xdg-open perfekt ohne Desktop-Umgebung. Zum Beispiel benutze ich es mit i3 Window Manager.
Alois Mahdal
Gibt es eine generische Möglichkeit, während der Installation der App eine neue URL / App-Zuordnung zu erstellen?
Jayarjo
14

Ich beschreibe dies mit magnet:URI-Typ und Übertragung (dh bei bittorent), aber die gleiche Methode kann auf jedes Schema oder jeden Dateityp angewendet werden.

Ich habe dies auch mit Debian Jessie überprüft, und ich habe tatsächlich keinen Ubuntu-Rechner, aber ich glaube, er sollte gleich funktionieren (zumindest für xdg-open , beachten Sie, dass Dateimanager möglicherweise andere Logik verwenden).

  1. Finden Sie den MIME-Typ-String heraus. Für Datei-MIME-Typen können Sie dies mit dem Befehl file herausfinden :

    $ file -i Broken_Blossoms.webm 
    Broken_Blossoms.webm: video/webm; charset=binary
    $
    

    Für die obige Datei lautet der MIME-Typ video/webm.

    Für URI - Handler, ist die Art x-scheme-handler/<scheme>, in der <scheme>der Teil der URI vor Dickdarm-, zB „http“, „mailto“ „IRC“ oder „Magneten“. Es folgen Beispiele für gültige MIME-Typen:

    x-scheme-handler/http
    x-scheme-handler/irc
    x-scheme-handler/magnet
    x-scheme-handler/mailto
    
  2. Ermitteln Sie den Namen der Desktop-Anwendungsdatei.

    Oft ist es nicht dasselbe wie der "offizielle" Name, sondern eher eine Kleinbuchstabenversion davon oder ein völlig anderer Name. Installierte .desktop-Dateien befinden sich unter / usr / share / applications. Da es sich um normale Textdateien handelt, die den "offiziellen" Namen enthalten, kann der folgende Befehl hilfreich sein:

    $ grep "Transmission" -l -r /usr/share/applications
    /usr/share/applications/transmission-gtk.desktop
    $
    

    Der Befehl bedeutet effektiv "Dateien in diesem Verzeichnis auflisten, die das Wort" Übertragung "enthalten". Einige Anwendungen werden möglicherweise nur für Benutzer installiert. In diesem Fall lautet der Pfad ~/.local/share/applications.

    Falls Sie eine "seltsame" Anwendung haben, die die Datei möglicherweise gar nicht enthält, können Sie immer eine erstellen (und sie möglicherweise an die App-Entwickler senden). Ein einfacher Weg wäre, ein vorhandenes Feld zu kopieren, Felder, die Sie verstehen, neu zu schreiben und diejenigen zu entfernen, die Sie nicht kennen. Einzelheiten finden Sie in der Spezifikation .

  3. Nehmen Sie die Zuweisung mit dem Befehl xdg-mime vor :

    $ xdg-mime default transmission-gtk.desktop x-scheme-handler/magnet
    $
    

    Beachten Sie, dass Sie unabhängig davon, wo sich die Datei tatsächlich befindet (/ usr / share / applications, ~ / .local / share / applications ...), immer nur den Namen und nicht den vollständigen Pfad verwenden.

    Normalerweise gibt der Befehl nichts aus - das ist in Ordnung. Wenn Sie überprüfen möchten, was Sie gerade getan haben, oder sehen möchten, was aktuell einem MIME-Typ zugewiesen ist, ohne ihn zu öffnen:

    $ xdg-mime query default x-scheme-handler/magnet
    transmission-gtk.desktop
    $
    

Hinweis 1: Wenn Sie andere MIME-Typen auschecken möchten, können Sie unter /etc/mime.types nachsehen. Es enthält nicht alle Arten in der Welt; Zum Beispiel die URI-Handler, aber sie könnten für "aggressive" Formen des Umgangs mit den Assoziationen verwendet werden. Beispielsweise:

grep ^video/ | cut -d\t -f1 | xargs xdg-mime default vlc.desktop

würde alle bekannten Videoformate mit VLC verknüpfen.

Hinweis 2: Die .desktop-Dateien enthalten häufig eine Liste von MIME-Typen, die sie angeblich mithilfe von MimeTypeFeldern verarbeiten können. Die Manpage von xdg-mime besagt, dass die .desktop-Datei den MIME-Typ beanspruchen muss, bevor der oben genannte Befehl ausgeführt werden kann. Bei mir scheint dies jedoch auch dann zu funktionieren, wenn das Feld fehlt. (Ich meine, die Zuordnung wird angewendet und die Anwendung wird gestartet - wenn sie wirklich mit dem Typ fertig wird, ist das eine andere Frage.) Ich bin mir nicht sicher, was ein Nachteil ist (vielleicht wird das xdg-mime in Zukunft restriktiver sein).

Alois Mahdal
quelle
wiki.archlinux.org/index.php/xdg-open gibt mehr oder weniger das gleiche. immer noch gut da.
Shirish
Diese Antwort ist der beste Weg. Tipp: 1) xdg-mime query filetype FILEist die XDG-Methode zum Auffinden von MIME-Typen. 2) Sie können die Standardeinstellungen auch selbst bearbeiten, um die Organisation zu verbessern und sie später zu sichern: Ist .config/mimeapps.listdie Datei.
Ciro Santilli am
2 Änderungen rückgängig gemacht: @frank, möchten Sie erklären, wie xdg-mime "besser funktioniert"? IMO- Datei ist das autoritative Tool für MIME-Typen, xdg-mime query filetype xyz.wbemOTOH gibt weniger Informationen und ist viel mehr zu tippen.
Alois Mahdal
1
Tolle Erklärung und der Tipp, den einzigen Namen der Desktop-Datei zu verwenden, war die Lösung, nach der ich gesucht habe. Danke!
Andrea Richiardi
1
Dieser Rat half mir schließlich zu lösen, dass ich mich nicht mit der Slack Desktop App unter Linux anmelden konnte. Slack leitet zu einem Browser um, der Browser verwendet dann jedoch ein URI-Schema, um zurück zu Slack umzuleiten. Ihre Tipps haben mir geholfen, festzustellen, dass die lockere URI-XDG-MIME-Zuordnung nicht mehr vorhanden ist. Ich bin so froh, dass ich das nach einer Stunde des Suchens gefunden habe! Danke dir!
Pestophagus
2

Ich wollte postmanmeiner manuell installierten Postman-App (nicht der Chrome-Erweiterung) Links zuordnen, damit ich Postman-Dokumente folgendermaßen über den Browser öffnen konnte:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Der Link, den ich verknüpfen wollte, sieht folgendermaßen aus:

postman://app/collections/import/39995-2b0394ab-b007-488d-9a0a...

Um die Assoziation zu machen, habe ich die folgenden Schritte ausgeführt:

  1. Installiere die App manuell (downloade und entpacke ein tar.gz) in /home/andrzej.rehmann/software/postman/
  2. Erstellen Sie eine Desktop-Datei in /usr/share/applications/Postman.desktop
[Desktop Entry]
Version=1.0
Type=Application
Name=Postman
Icon=/home/andrzej.rehmann/software/postman/app/resources/app/assets/icon.png
Exec="/home/andrzej.rehmann/software/postman/Postman" %u
Comment=Develop with pleasure!
Categories=Development;
Terminal=false
StartupWMClass=Postman
  1. postmanVerknüpfen Sie den xdg-Link mit der Anwendung, indem Sie Folgendes ausführen:

xdg-mime default Postman.desktop x-scheme-handler/postman


Ich habe diese Konfiguration angepasst, wenn jemand daran interessiert ist: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml

Andrzej Rehmann
quelle