有一种方法可以用 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我的眼睛看起来有点乱(只是用这个措辞开玩笑,没什么不好的)
下面是什么?
旁注:我正在寻找即使在未加载完整桌面环境的情况下也能最好工作的东西,例如在运行 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 …Run Code Online (Sandbox Code Playgroud) 需要对.desktop文件的权限进行一些说明。我可以看到root拥有的所有.desktop文件/usr/share/applications/都有权限,
-rw-r--r--
Run Code Online (Sandbox Code Playgroud)
同时examples.desktop,在$HOME由用户拥有具有相同的权限。所有这些都运行正常。
但是当我要创建一个.desktop具有相同权限的自定义文件时,它会抛出以下错误消息,
不受信任的应用程序启动器
应用程序启动器“myapp.desktop”尚未标记为受信任。如果您不知道此文件的来源,启动它可能是不安全的。
但是添加执行权限可以让它毫无问题地运行。
问:为什么自定义
.desktop文件需要有+x权限才能运行,或者有些.desktop文件没有执行权限怎么能运行?是否可以在.desktop没有执行权限的情况下运行自定义文件?