web-dev-qa-db-fra.com

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

Je souhaite utiliser xdg-open pour ouvrir les liens irc://. Comment puis-je définir le paramètre requis?

26
Oxwivi

xdg-open cherche simplement à voir votre environnement de bureau, puis lance gnome-open, gvfs-open, xfce-open, etc. Voir ci-dessous les 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 irc: // blah ouvert, gnome-open ouvre xchat, car xchat inclut un correctif de configuration gconf permettant d'ajouter un gestionnaire irc: //.

gconf-editor showing irc with xchat configuration

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.schemas à titre d'exemple.

KDE

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

KDE utilise kde-open ou kfmclient en fonction de la disponibilité et de la version de KDE dont vous disposez.

XFCE

XFCE utilise un programme appelé exo-open, ce programme n’a aucun moyen de le configurer ou d’ajouter des gestionnaires uri. En regardant à travers le code source, on voit qu’il utilise des fichiers du bureau pour spécifier seulement 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 cas, 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 à stackexchange.com 2 .

17

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

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

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

    $ 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 précédant les deux points, par exemple. "http", "mailto" "irc" ou "aimant". 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 le même nom que le nom "officiel", mais plutôt une version minuscule de celui-ci, ou un nom complètement différent. Les fichiers .desktop installés sont stockés sous/usr/share/applications. S'agissant de fichiers texte normaux contenant 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 en réalité "la liste des fichiers de ce répertoire contenant le mot" Transmission "". Certaines applications peuvent être installées uniquement pour l'utilisateur. Dans ce cas, le chemin serait ~/.local/share/applications.

    Si vous avez une application "étrange" qui peut ne pas avoir le fichier, vous pouvez toujours en créer un (et éventuellement l'envoyer aux développeurs de l'application). Le moyen le plus simple serait de copier un fichier 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. Affecter en utilisant xdg-mime commande:

    $ 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 niquement le nom, pas le chemin complet.

    Normalement, la commande ne produira rien - c'est OK. Si vous voulez 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
    $
    

Note 1: Si vous voulez vérifier d'autres types MIME, vous pouvez regarder /etc/mime.types. Il ne contient pas tous les types du monde. par exemple les gestionnaires d'URI, mais il pourrait être utilisé pour une forme "agressive" de traitement des associations. Par exemple:

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

associerait tous les formats vidéo connus à VLC.

Note 2: Les fichiers .desktop contiennent souvent une liste de types MIME qu'ils prétendent pouvoir gérer à l'aide du champ MimeType. xdg-mime La page de manuel indique que le fichier .desktop doit réclamer le type MIME avant que la commande susmentionnée 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 , le type est une question différente). Je ne sais pas trop quels sont les inconvénients (peut-être que dans l'avenir, le xdg-mime sera plus restrictif).

12
Alois Mahdal

Je souhaitais associer des liens postman à mon application Postman installée manuellement (et non à l'extension chrome) afin de pouvoir ouvrir les documents Postman à partir du navigateur de la manière suivante:

enter image description here

enter image description here

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 fichier 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 lien postman xdg à l'application en exécutant:

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


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

1
Andrzej Rehmann