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

24

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

    
posée Oxwivi 22.09.2011 - 20:49
la source

2 réponses

17

xdg-open recherche simplement l'environnement de bureau que vous possédez, 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 sur lequel gnome-open irc: // blah ouvre xchat car xchat inclut un correctif de configuration gconf pour ajouter un gestionnaire irc: //.

Cela montre comment gnome le fait, avec des paramètres gconf dans /desktop/gnome/url-handlers/ . Voir xchat-2.8.8/src/common/dbus/apps_xchat_url_handler.schemas comme 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 /, s'il est super utile alors pensez à l’ajouter au package en tant que correctif pour les autres utilisateurs.

KDE utilise kde-open ou kfmclient en fonction de ce qui est disponible et de 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. En parcourant le code source, vous voyez que vous utilisez 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 / éditer 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 .

    
réponse donnée Martin Owens -doctormo- 22.09.2011 - 21:34
la source
10

Je vais décrire ceci avec le type magnet: 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 aussi vérifié cela avec Debian Jessie et je n'ai pas Ubuntu machine, mais je crois 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  découvrez-le avec la commande fichier :

    $ 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 deux-points, par ex. "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 d'application .desktop.

    Souvent, ce n'est pas la même chose que le nom "officiel" mais plutôt en minuscule version de celui-ci, ou un nom complètement différent. Installé .desktop les fichiers vivent sous / usr / share / applications. Comme ce sont des textes normaux fichiers 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 efficacement "lister les fichiers sous ce répertoire contenant le mot "Transmission" ". Certaines applications peuvent être installé uniquement pour l'utilisateur, dans ce cas le chemin serait ~/.local/share/applications .

    Si vous avez une application "étrange" qui ne contient peut-être pas le fichier du tout, vous pouvez toujours en créer un (et peut-être l'envoyer à l'application développeurs). Un moyen simple serait de copier un existant, réécrire les champs que vous comprenez et retirez ceux que vous ne comprenez pas. Se référer au 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 le fichier (/ usr / share / applications, ~ / .local / share / applications ...), vous utilisez toujours seulement le nom , pas le chemin complet.

    Normalement, la commande n’affiche rien - c’est OK. Si vous voulez vérifier ce que vous venez de faire ou voir ce qui est actuellement assigné à tout type MIME sans l'ouvrir:

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

Remarque 1: si vous souhaitez extraire d’autres types MIME, vous pouvez regarder dans /etc/mime.types. Il ne contient pas tous les types dans le monde; pour exemple les gestionnaires d'URI, mais il pourrait être utilisé pour la forme "agressive" de gérer les 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 la liste des types MIME ils prétendent être capables de gérer en utilisant le champ MimeType . xdg-mime La page de manuel indique que le fichier .desktop doit revendiquer le type MIME avant la commande mentionnée ci-dessus fonctionnera, mais pour moi cela semble fonctionner même si le champ est manquant. (Je veux dire, l'association sera appliquée et l'application va lancer - si peut vraiment gérer le type est un question différente). Je ne suis pas sûr de ce qui est un inconvénient (peut-être à l'avenir le xdg-mime sera plus restrictif).

    
réponse donnée Alois Mahdal 30.11.2014 - 22:46
la source

Lire d'autres questions sur les étiquettes