Gestionnaires de protocole URL dans Ubuntu Desktop de base

16

Il y avait un moyen d'enregistrer les gestionnaires de protocole URL avec Gconf, qui est maintenant obsolète et il semble qu'il n'y ait aucun moyen de faire de même avec DConf (ou Gsettings, son wrapper recommandé).

Comment enregistrer correctement un gestionnaire de protocole URL depuis DConf?

De plus, quelque chose me semble étrange (car je ne le comprends pas), sur mon Ubuntu 12.04

Le protocole apt://doit être géré par la apturlcommande. C'est le cas avec mon navigateur Opera, mais uniquement parce que j'ai ajouté cette association spécifique en utilisant la fonction de configuration du navigateur. Sinon, dans le reste de l'environnement:

  • La course xdg-open apt://foo.bars'ouvre elinks(mon www-browseralternative).
  • L'exécution gnome-open apt://foo.barouvre le Centre logiciel.
  • En ouvrant gconf-editor, je vois une clé /desktop/gnome/url-handlers/aptdont la valeur est apturl "%s"et elle est activée. Cette configuration semble être ignorée, ce qui est raisonnablement attendu, car GConf est considéré comme obsolète.
  • Ouverture dconf-editor, je ne vois rien de lié aux gestionnaires d'URL ou aux protocoles dans/desktop/gnome

Ça a l'air un peu désordonné à mes yeux (juste taquiner avec cette formulation, rien de mal)

Qu'y a-t-il en dessous?

Note latérale: Je recherche quelque chose qui fonctionne de préférence même lorsque l'environnement de bureau complet n'est pas chargé, comme lors de l'exécution d'une session i3wm avec uniquement gsettings-daemon(et d'autres choses sans rapport avec ce cas) chargé.

Mise à jour

Une autre façon d '«enregistrer» un gestionnaire de protocole consiste à *.desktoputiliser des fichiers et leur type MIME; par exemple MimeType=application/<the-protocol>;.

J'ai trouvé un /usr/share/applications/ubuntu-software-center.desktopavec ce contenu:

[Desktop Entry]
Name=Ubuntu Software Center
GenericName=Software Center
Comment=Lets you choose from thousands of applications available for Ubuntu
Exec=/usr/bin/software-center %u
Icon=softwarecenter
Terminal=false
Type=Application
Categories=PackageManager;GTK;System;Settings;
MimeType=application/x-deb;application/x-debian-package;x-scheme-handler/apt;
StartupNotify=true
X-Ubuntu-Gettext-Domain=software-center
Keywords=Sources;PPA;Install;Uninstall;Remove;Purchase;Catalogue;Store;

Celui-ci explique pourquoi gnome-open apt://foo.barouvre le Centre logiciel au lieu de apturl.

J'ai donc installé ceci apturl.desktopdans ~/.local/share/applications:

[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Terminal=false
Exec=/usr/bin/apturl %u
Name=APT‑URL
Comment=APT‑URL handler
Icon=
Categories=Application;Network;
MimeType=x-scheme-handler/apt;

Après , update-desktop-databaseet même après le redémarrage, les deux xdg-openet gnome-openfaire toujours le même et ignorer ce fichier de bureau de l' utilisateur, qui , comme d' habitude avec les fichiers de bureau utilisateur, devrait l' emporter sur celui /usr/share/applications/.

Il y a peut-être quelque chose de spécial avec les fichiers de bureau spécifiant le x-scheme-handlertype MIME et ils ne sont pas traités de la manière habituelle.

La méthode du fichier de bureau ne répond pas à la question.

Hibou57
la source
1
Cela peut aider: unix.stackexchange.com/a/100736
Todd Owen

Réponses:

9

Ouvrez ~/.local/share/applications/mimeapps.listet ajoutez une ligne comme:

x-scheme-handler/apt=apturl.desktop
ange
la source
Oui, je pourrais le comprendre pour HTTP, MAILTO et quelques autres.
Hibou57
Il n'y a pas un tel dossier. J'ai fait une recherche depuis root et je ne l'ai pas trouvée.
Vlas Bashynskyi
@VlasBashynskyi, l'emplacement de mimeapps.listpeut varier. Je suggère d'exécuter une recherche pour le nom de fichier.
Hibou57
4

xdg-mime

Peut-être plus élégant (dans cet exemple, j'utilise "apt" , changez-le pour tout autre schéma):

  1. Vérifiez les types MIME enregistrés /usr/share/applications/defaults.list.
  2. Ajoutez le apt.desktopfichier ( ici quelques exemples ) à ~/.local/share/applications/(à l'échelle de l'utilisateur) ou /usr/share/applications/(à l'échelle du système).
  3. Créez une base de données de cache de types MIME gérés par des fichiers de bureau: update-desktop-database
  4. Enregistrez un protocole avec

    xdg-mime default apt.desktop x-scheme-handler/apt`
    

    Cela ajoutera le nouveau type MIME au schéma ~/.local/share/applications/mimeapps.list. Vous pouvez enregistrer le nouveau type MIME pour tous les utilisateurs du système sudo xdg-mime install --mode system <xml file>.

Testez avec xdg-open "apt://foo.bar".

Voir aussi Ajout d'un type MIME .

Pablo Bianchi
la source