Був спосіб зареєструвати обробники протоколів 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, і вони не обробляються звичайним чином.
Файл настільних файлів не відповідає на питання.