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

基本 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,我看不到与 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-opengnome-open仍然会执行相同的操作并忽略此用户桌面文件,与用户桌面文件一样,它应该覆盖中的文件/usr/share/applications/

也许桌面文件指定了 MIME 类型,有一些特殊之处x-scheme-handler,所以它们不能按照通常的方式处理。

桌面文件方式没有回答这个问题。

答案1

xdg-mime

也许更优雅(在这个例子中我使用“易于”,将其更改为任何其他方案):

  1. 检查已注册的 MIME 类型/usr/share/applications/defaults.list
  2. 添加apt.desktop文件(这里有一些例子) 至~/.local/share/applications/(用户范围) 或/usr/share/applications/(系统范围)。
  3. 建立桌面文件处理的 MIME 类型的缓存数据库(可能需要sudo):
    update-desktop-database
  4. 注册协议
    xdg-mime default apt.desktop x-scheme-handler/apt
    

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

测试xdg-open "apt://foo.bar"

也可以看看添加 MIME 类型

答案2

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

x-scheme-handler/apt=apturl.desktop

答案3

当启动如下 href 链接时:

zoommtg://zoom.us/join?action=join&confno=000000

这就是我使用 zoom 时的效果

echo "x-scheme-handler/zoommtg=Zoom.desktop" >> ~/.local/share/applications/mimeapps.list

相关内容