Comment définir un nouveau paramètre xdg-open?

Réponses:

17

xdg-open cherche simplement à voir quel environnement de bureau vous avez, puis exécute gnome-open, gvfs-open, xfce-open, etc. Voir ci-dessous pour des instructions spécifiques à l'environnement de bureau ...

Gnome

Gnome utilise le programme gnome-open qui utilise gconf pour tout stocker. Par exemple, sur ma machine avec Ubuntu 10.10 exécutant gnome-open irc: // blah ouvre xchat car xchat inclut un correctif de configuration gconf pour ajouter un gestionnaire irc: //.

gconf-editor montrant irc avec la configuration xchat

Cela montre comment gnome fait cela, avec les paramètres gconf dans /desktop/gnome/url-handlers/. Voir à xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemastitre d'exemple.

KDE

Pour KDE, vous devriez regarder les fichiers .protocol dans / usr / share / kde4 / services /, en créer un nouveau pour votre nouveau protocole et le mettre dans ~ / .kde / share / kde4 / services /, si c'est super utile alors envisagez de l'ajouter au package en tant que correctif pour les autres utilisateurs.

KDE utilise kde-open ou kfmclient selon ce qui est disponible et la version de KDE que vous avez.

XFCE

XFCE utilise un programme appelé exo-open, ce programme n'a aucun moyen de le configurer ou d'ajouter des gestionnaires uri. L'examen du code source montre qu'il utilise des fichiers de bureau pour spécifier uniquement trois types de programmes. TerminalEmulator, WebBrowser et EmailClient.

Avec XFCE4 (et probablement aussi d'autres), il est possible de configurer xdg-open pour définir un gestionnaire de protocole personnalisé. Dans certains, vous devez créer / modifier les fichiers suivants:

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

Un exemple d'ajout d'un gestionnaire pour le protocole ed2k est fourni sur stackexchange.com 2 .

Martin Owens -doctormo-
la source
Pouvez-vous indiquer comment procéder pour tous les DE officiels?
Oxwivi
Pas exactement lié à la question, mais pouvez-vous citer l'intégralité du répertoire en bas de la capture d'écran? Merci.
Oxwivi
4
xdg-open cherche simplement à voir quel environnement de bureau vous avez, puis exécute gnome-open, gvfs-open, xfce-open, etc. --- Je ne pense pas. Premièrement, la page de manuel ne dit pas cela, et deuxièmement, xdg-open fonctionne parfaitement sans environnement de bureau. Par exemple, je l'utilise avec le gestionnaire de fenêtres i3.
Alois Mahdal
Existe-t-il un moyen générique de créer une nouvelle association URL / application lors de l'installation de l'application?
jayarjo
14

Je décrirai cela avec le magnet:type d'URI et la transmission (c'est-à-dire le cas de bittorent), mais la même méthode peut être appliquée à n'importe quel schéma ou type de fichier.

J'ai également vérifié cela avec Debian Jessie, et je n'ai pas réellement de machine Ubuntu, mais je pense que cela devrait fonctionner de la même manière (au moins pour xdg-open , notez que les gestionnaires de fichiers peuvent choisir d'utiliser une logique différente).

  1. Découvrez la chaîne de type MIME. Pour les types de fichiers MIME, vous pouvez le découvrir avec la commande file :

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

    Pour le fichier ci-dessus, le type MIME est video/webm.

    Pour les gestionnaires d'URI, le type est x-scheme-handler/<scheme>, où <scheme>est la partie de l'URI avant les deux points, par exemple "http", "mailto" "irc" ou "magnet". Voici des exemples de types MIME valides:

    x-scheme-handler/http
    x-scheme-handler/irc
    x-scheme-handler/magnet
    x-scheme-handler/mailto
    
  2. Découvrez le nom du fichier .desktop de l'application.

    Souvent, ce n'est pas la même chose que le nom "officiel", mais plutôt une version minuscule, ou un nom complètement différent. Les fichiers .desktop installés se trouvent sous / usr / share / applications. Puisqu'ils sont des fichiers texte normaux et contiennent le nom "officiel", la commande suivante peut vous aider:

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

    La commande signifie effectivement "lister les fichiers dans ce répertoire qui contiennent le mot" Transmission "". Certaines applications peuvent être installées uniquement pour l'utilisateur, dans ce cas, le chemin serait ~/.local/share/applications.

    Dans le cas où vous avez une application "étrange" qui ne contient pas du tout le fichier, vous pouvez toujours en créer une (et peut-être l'envoyer aux développeurs de l'application). Un moyen simple serait de copier un existant, de réécrire les champs que vous comprenez et de supprimer ceux que vous ne comprenez pas. Reportez-vous à la spécification pour plus de détails.

  3. Effectuez l'affectation à l' aide de la commande xdg-mime :

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

    Notez que peu importe où se trouve réellement le fichier (/ usr / share / applications, ~ / .local / share / applications ...), vous utilisez toujours uniquement le nom , pas le chemin complet.

    Normalement, la commande ne produira rien - c'est OK. Si vous souhaitez vérifier ce que vous venez de faire ou voir ce qui est actuellement attribué à un type MIME sans l'ouvrir:

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

Remarque 1: Si vous souhaitez consulter d'autres types MIME, vous pouvez consulter /etc/mime.types. Il ne contient pas tous les types dans le monde; par exemple les gestionnaires d'URI, mais il pourrait être utilisé pour une forme "agressive" de gestion des associations. Par exemple:

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

associerait tous les formats vidéo connus à VLC.

Remarque 2: Les fichiers .desktop contiennent souvent une liste de types MIME qu'ils prétendent pouvoir gérer à l'aide de MimeTypefield. La page de manuel xdg-mime indique que le fichier .desktop doit revendiquer le type MIME avant que la commande mentionnée ci-dessus ne fonctionne, mais pour moi, cela semble fonctionner même si le champ est manquant. (Je veux dire, l'association sera appliquée et l'application sera lancée - si elle peut vraiment gérer le type, c'est une question différente). Je ne sais pas quel est l'inconvénient (peut-être qu'à l'avenir, le xdg-mime sera plus restrictif).

Alois Mahdal
la source
wiki.archlinux.org/index.php/xdg-open donne plus ou moins la même chose. toujours bon là-bas.
2015
Cette réponse est la meilleure façon. Astuce: 1) xdg-mime query filetype FILEest le moyen XDG pour trouver des types MIME. 2) Vous pouvez également modifier les valeurs par défaut vous-même pour garder les choses plus organisées et les sauvegarder plus tard: .config/mimeapps.listc'est le fichier.
Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
annulé 2 modifications: @frank, voulez-vous expliquer comment xdg-mime "fonctionne mieux"? Le fichier IMO est l'outil d'autorité pour les types MIME, xdg-mime query filetype xyz.wbemOTOH donne moins d'informations et est beaucoup plus à taper.
Alois Mahdal
1
Excellente explication et l'astuce pour utiliser le seul nom du fichier de bureau était la solution que je cherchais merci!
Andrea Richiardi
1
ce conseil m'a finalement aidé à résoudre le fait de ne pas pouvoir me connecter en utilisant une application de bureau lâche sur linux. slack redirige vers un navigateur, mais le navigateur utilise ensuite un schéma d'URI pour rediriger vers slack. vos conseils m'ont aidé à voir que le mappage mou xdg-mime URI avait disparu. tellement contente d'avoir trouvé ça après une heure de recherche! Je vous remercie!
pestophage
2

Je voulais associer des postmanliens à mon application Postman installée manuellement (et non à l'extension Chrome) afin de pouvoir ouvrir les documents postman à partir du navigateur comme ceci:

entrez la description de l'image ici

entrez la description de l'image ici

Le lien que je voulais associer ressemble à ceci:

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

Pour faire l'association j'ai fait les étapes suivantes:

  1. Installez l'application manuellement (téléchargez et décompressez un tar.gz) dans /home/andrzej.rehmann/software/postman/
  2. Créez un fichier de bureau dans /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. Associez le postmanlien xdg à l'application en exécutant:

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


J'ai corrigé cette configuration si quelqu'un est intéressé: https://github.com/hoto/ansible-home-fedora/blob/fedora/roles/postman/tasks/postman_installer.yml

Andrzej Rehmann
la source