Il y avait un moyen d'enregistrer les gestionnaires de protocole d'URL avec Gconf, qui est maintenant obsolète et il semble n'y avoir aucun moyen de faire la même chose avec DConf (ou Gsettings, son wrapper recommandé).
Comment enregistrer correctement un gestionnaire de protocole d'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 commande apturl
. C'est le cas avec mon navigateur Opera, mais uniquement parce que j'ai ajouté cette association spécifique à l'aide de la fonction de configuration du navigateur. Sinon, dans le reste de l'environnement:
xdg-open apt://foo.bar
ouvre elinks
(mon alternative www-browser
).gnome-open apt://foo.bar
ouvre le centre de logiciels.gconf-editor
, je vois une clé /desktop/gnome/url-handlers/apt
dont la valeur est apturl "%s"
et qui est activée. Cette configuration semble être ignorée, ce qui est raisonnablement prévisible, car GConf est considéré comme obsolète.dconf-editor
, je ne vois rien de ce qui concerne les gestionnaires d’URL ou les protocoles dans /desktop/gnome
Ça a l'air un peu brouillon à mes yeux (juste taquiner avec cette formulation, rien de grave)
Qu'est-ce qu'il y a 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 éléments non liés à cette affaire) chargés.
Un autre moyen de "enregistrer" un gestionnaire de protocole consiste à utiliser les fichiers *.desktop
et leur type MIME; par exemple. MimeType=application/<the-protocol>;
.
J'ai trouvé un /usr/share/applications/ubuntu-software-center.desktop
avec 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.bar
ouvre le SoftwareCenter au lieu de apturl
.
J'ai donc installé ce apturl.desktop
dans ~/.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-database
et même après le redémarrage, xdg-open
et gnome-open
font toujours la même chose et ignorent ce fichier de bureau de l'utilisateur, qui, comme d'habitude avec les fichiers de bureau de l'utilisateur, devrait remplacer celui de /usr/share/applications/
.
Peut-être y at-il quelque chose de spécial avec les fichiers du bureau spécifiant le type MIME x-scheme-handler
et ils ne sont pas gérés de la manière habituelle.
La méthode du fichier de bureau ne répond pas à la question.
Ouvrez ~/.local/share/applications/mimeapps.list
et ajoutez une ligne comme celle-ci:
x-scheme-handler/apt=apturl.desktop
xdg-mime
Peut-être plus élégant (dans cet exemple, j'utilise "apt" , changez-le pour tout autre schéma):
/usr/share/applications/defaults.list
.apt.desktop
à ~/.local/share/applications/
ou /usr/share/applications/
( ici des exemples ).update-desktop-database
Enregistrer un protocole avec
xdg-mime default apt.desktop x-scheme-handler/apt`
Ceci ajoutera le nouveau type MIME pour le 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"