Manejadores de protocolo URL en Ubuntu Desktop básico

Había una forma de registrar los controladores de protocolo de URL con Gconf, que ahora está obsoleto y no parece haber ninguna manera de hacer lo mismo con DConf (o Gsettings, su envoltorio recomendado).

¿Cómo se puede registrar correctamente un controlador de protocolo de URL desde DConf?

Además, algo me parece extraño (como no lo entiendo), en mi Ubuntu 12.04

El protocolo apt:// debe ser manejado por el comando apturl . Lo mismo ocurre con mi navegador Opera, pero solo porque agregué esta asociación específica utilizando la función de configuración del navegador. De lo contrario, en el rest del entorno:

  • Ejecutando xdg-open apt://foo.bar abre los xdg-open apt://foo.bar (mi alternativa al www-browser ).
  • Ejecutando gnome-open apt://foo.bar abre el Centro de software.
  • Al abrir gconf-editor , veo una clave /desktop/gnome/url-handlers/apt cuyo valor es apturl "%s" y está habilitado. Esta configuración parece ser ignorada, lo cual es razonablemente esperado, ya que GConf se considera obsoleto.
  • Al abrir dconf-editor , no puedo ver nada relacionado con los controladores o protocolos de URL en /desktop/gnome

Parece un poco desordenado para mis ojos (solo bromeando con esta redacción, nada malo)

¿Qué hay debajo?

Nota al margen: estoy buscando algo que funcione preferiblemente incluso cuando el entorno de escritorio completo no está cargado, como cuando se ejecuta una sesión de i3wm con solo gsettings-daemon (y otras cosas no relacionadas con este caso) cargadas.

Actualizar

Otra forma de “registrar” un controlador de protocolo es con *.desktop archivos *.desktop y su tipo MIME; por ejemplo, MimeType=application/; .

Encontré un /usr/share/applications/ubuntu-software-center.desktop con este contenido:

 [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; 

Este explica por qué gnome-open apt://foo.bar abre el Centro de software en lugar de apturl .

Así que instalé este apturl.desktop en ~/.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; 

Después de update-desktop-database e incluso después de reiniciar, tanto xdg-open como gnome-open siguen haciendo lo mismo e ignoran este archivo de escritorio del usuario, que, como es habitual con los archivos de escritorio del usuario, debe anular el archivo en /usr/share/applications/ .

Tal vez haya algo especial con los archivos de escritorio que especifican el tipo MIME del x-scheme-handler y no se manejan de la manera habitual.

La forma de archivo de escritorio no responde a la pregunta.

Abra ~/.local/share/applications/mimeapps.list y agregue una línea como:

 x-scheme-handler/apt=apturl.desktop 

xdg-mime

Quizás más elegante (cambie “apt” por cualquier otro esquema nuevo):

  1. Verifique los tipos mime registrados en /usr/share/applications/defaults.list .
  2. Agregue el archivo apt.desktop a ~/.local/share/applications/ o /usr/share/applications/ ( aquí ejemplos ).
  3. update-desktop-database – Construye una base de datos de caché de tipos MIME manejados por archivos de escritorio
  4. Registrar un protocolo con

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

    Esto agregará el nuevo Tipo MIME para el esquema a ~/.local/share/applications/mimeapps.list . Puede registrar el nuevo tipo mime para todos los usuarios en el sistema sudo xdg-mime install --mode system .

Prueba con xdg-open "apt://foo.bar"