有一种向Gconf注册URL协议处理程序的方法,该方法现在已过时,并且似乎没有办法对DConf(或Gsettings,其推荐的包装器)进行同样的操作。
自DConf以来,如何正确注册URL协议处理程序?
另外,在我的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
我的眼睛看起来有点乱(只是用这个措辞取笑,没什么不好的)
到底是什么?
旁注:我正在寻找即使在未加载整个桌面环境的情况下也能正常工作的东西,例如在运行仅加载了gsettings-daemon
(以及与此情况无关的其他东西)的i3wm会话时。
更新资料
“注册”协议处理程序的另一种方法是使用*.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类型的桌面文件可能有一些特殊之处,并且无法按常规方式进行处理。
桌面文件方式无法回答问题。