Обработчики протокола URL в базовом Ubuntu Desktop
Был способ зарегистрировать обработчики протокола 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 типа, и они не обрабатываются обычным способом.
Путь к рабочему столу не отвечает на вопрос.
3 ответа
Открыто ~/.local/share/applications/mimeapps.list
и добавьте строку вроде:
x-scheme-handler/apt=apturl.desktop
xdg-mime
Может быть, более элегантно (в этом примере я использую "apt", измените его для любой другой схемы):
- Проверьте зарегистрированные MIME-типы в
/usr/share/applications/defaults.list
, - Добавить
apt.desktop
подать в~/.local/share/applications/
или же/usr/share/applications/
( здесь примеры). - Создать кеш-базу данных типов MIME, обрабатываемых файлами рабочего стола:
update-desktop-database
Зарегистрировать протокол с
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"
При запуске href-ссылки вида:
zoommtg://zoom.us/join?action=join&confno=000000
Вот что у меня сработало с зумом
echo "x-scheme-handler/zoommtg=Zoom.desktop" >> ~/.local/share/applications/mimeapps.list