Обработчики протокола URL в базовом Ubuntu Desktop

16

Был способ зарегистрировать обработчики протокола URL в Gconf, который сейчас устарел, и, похоже, нет способа сделать то же самое с DConf (или Gsettings, его рекомендуемой оболочкой).

Как правильно зарегистрировать обработчики протокола URL после DConf?

Кроме того, что-то странное для меня (как я не понимаю) на моей Ubuntu 12.04

Протокол apt://должен обрабатываться apturlкомандой. Это так с моим браузером Opera, но только потому, что я добавил эту конкретную связь, используя средство настройки браузера. В противном случае, в остальной среде:

  • Бег xdg-open apt://foo.barоткрывает elinks(моя www-browserальтернатива).
  • Запуск gnome-open apt://foo.barоткрывает Центр программного обеспечения.
  • Открывая gconf-editor, я вижу ключ /desktop/gnome/url-handlers/apt, значение которого apturl "%s"и оно включено. Эта конфигурация, кажется, игнорируется, что вполне разумно, так как GConf считается устаревшим.
  • Открытие dconf-editor, я не вижу ничего, связанного с обработчиками URL или протоколами в/desktop/gnome

Это выглядит немного грязно для моих глаз (просто дразнить с этой формулировкой, ничего плохого)

Что под ним?

Примечание: я ищу что-то, что предпочтительно работает, даже когда полная среда рабочего стола не загружена, например, при запуске сеанса i3wm только с gsettings-daemon(и другими вещами, не связанными с этим случаем).

Обновить

Другой способ «зарегистрировать» обработчик протокола - это *.desktopфайлы и их MIME-тип; например MimeType=application/<the-protocol>;.

Я нашел /usr/share/applications/ubuntu-software-center.desktopс этим содержанием:

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

Это объясняет, почему gnome-open apt://foo.barвместо этого открывается Центр программного обеспечения apturl.

Итак, я установил это apturl.desktopв ~/.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;

После update-desktop-databaseи даже после перезагрузки и то xdg-openи другое gnome-openделают то же самое и игнорируют этот файл рабочего стола пользователя, который, как обычно, с файлами рабочего стола пользователя, должен переопределять один из них /usr/share/applications/.

Возможно, что-то особенное в файлах рабочего стола, указывающих x-scheme-handlerтип MIME, и они не обрабатываются обычным способом.

Настольный файл не отвечает на этот вопрос.

Hibou57
источник
1
Это может помочь: unix.stackexchange.com/a/100736
Тодд Оуэн,

Ответы:

9

Откройте ~/.local/share/applications/mimeapps.listи добавьте строку, например:

x-scheme-handler/apt=apturl.desktop
ангел
источник
Я мог бы понять это для HTTP, MAILTO и некоторых других.
Hibou57
Там нет такой папки. Я сделал поиск из корня, и не нашел его.
Влас Башинский
@VlasBashynskyi, расположение mimeapps.listможет отличаться. Я бы предложил запустить поиск по имени файла.
Hibou57
4

xdg-mime

Может быть, более элегантно (в этом примере я использую «apt» , измените его для любой другой схемы):

  1. Проверьте зарегистрированные MIME-типы в /usr/share/applications/defaults.list.
  2. Добавьте apt.desktopфайл ( здесь несколько примеров ) в ~/.local/share/applications/(для всего пользователя) или /usr/share/applications/(для всей системы).
  3. Создать кеш-базу данных типов MIME, обрабатываемых файлами рабочего стола: update-desktop-database
  4. Зарегистрировать протокол с

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

    Это добавит новый тип MIME для схемы ~/.local/share/applications/mimeapps.list. Вы можете зарегистрировать новый mime-тип для всех пользователей системы sudo xdg-mime install --mode system <xml file>.

Тест с xdg-open "apt://foo.bar".

Смотрите также Добавление MIME-типа .

Пабло Бьянки
источник