基本Ubuntu桌面中的URL协议处理程序

有一种方法可以使用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 ,我在/desktop/gnome中看不到任何与URL处理程序或协议相关的内容

我的眼睛看起来有点乱(只是戏弄这个措辞,没什么不好)

什么在下面?

旁注:即使没有加载完整的桌面环境,我也在寻找最适合的东西,比如在运行只有gsettings-daemon (以及与此案例无关的其他内容)的i3wm会话时。

更新

“注册”协议处理程序的另一种方法是使用*.desktop文件及其MIME类型; 例如MimeType=application/;

我找到了这个内容的/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

所以我在~/.local/share/applications安装了这个apturl.desktop

 [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-opengnome-open仍然会执行相同操作并忽略此用户桌面文件,这通常与用户桌面文件一样,应该覆盖/usr/share/applications/

也许桌面文件有一些特殊的东西,指定x-scheme-handler MIME类型,并且它们不按常规方式处理。

桌面文件方式不回答问题。

打开~/.local/share/applications/mimeapps.list并添加如下行:

 x-scheme-handler/apt=apturl.desktop 

xdg-mime

也许更优雅(对任何新的其他方案改变“apt” ):

  1. 检查/usr/share/applications/defaults.list注册的mime-types。
  2. apt.desktop文件添加到~/.local/share/applications//usr/share/applications/ ( 这里的示例 )。
  3. update-desktop-database – 构建由桌面文件处理的MIME类型的缓存数据库
  4. 注册协议

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

    这会将方案的新MIME类型附加到~/.local/share/applications/mimeapps.list 。 您可以在系统sudo xdg-mime install --mode system 上为所有用户注册新的mime-type。

使用xdg-open "apt://foo.bar"