首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义URI处理: xdg-open和Firefox工作,但Chrome不工作

自定义URI处理: xdg-open和Firefox工作,但Chrome不工作
EN

Unix & Linux用户
提问于 2021-09-19 10:18:39
回答 1查看 5.9K关注 0票数 5

我正在尝试将我的Linux环境配置为使用Obsidian应用程序打开obsidian:// URI(参见使用黑点URI)。

这就是我正在使用的流程。我是在一台干净的Ubuntu机器上这样做的,以确保它能够复制:

  1. Obsidian.AppImage文件与一个icon.jpg文件一起存储在~/obsidian中。AppImage文件具有执行权限。
  2. 这是我的~/.local/share/applications/obsidian.desktop文件的内容: Name=Obsidian Exec=/home/rachum/obsidian/Obsidian.AppImage %u Terminal=false Type=Application Icon=/home/rachum/obsidian/icon.png StartupWMClass=obsidian X-AppImage=0.8.15 Comment=Obsidian Categories=Office;
  3. 我运行过update-desktop-database ~/.local/share/applications/
  4. 使用"obsidian://new?vault=notes&name=note&content=content“按预期工作:xdg-打开xdg-open,这个命令行打开带有新注释和内容的Obsidian应用程序。
  5. 在Firefox (预装)中,在URL栏中键入上述URI也会打开带有新注释和内容的Obsidian应用程序。
  6. 我通过从官方Chrome站点下载.deb文件并运行dpkg -i <.deb file>来安装Google
  7. 在Chrome中输入上面的URI将我重定向到Google搜索"obsidian://new?vault=notes&name=note&content=content".

为什么Chrome不尊重XDG配置?

更新1:添加更多细节来回答评论。

我的~/.local/share/applications/mimeapps.list文件如下所示:

代码语言:javascript
复制
[Default Applications]
x-scheme-handler/obsidian=obsidian.desktop

我的~/.local/share/applications/mimeinfo.cache文件如下所示:

代码语言:javascript
复制
[MIME Cache]
text/html=obsidian.desktop;
x-scheme-handler/obsidian=obsidian.desktop;
EN

回答 1

Unix & Linux用户

发布于 2021-09-22 19:36:02

为什么Chrome不尊重XDG配置?

您的评估是不正确的,Chrome确实使用xdg。下面的屏幕截图显示,谷歌铬和铬都会提示打开xdg的“特殊链接”。

重置始终运行的选项

如果您以前接受过“始终打开此类型的文件”对话框,则需要重置此设置。您要清除的选项是:

下载后自动打开某些文件类型

为了获得这个选项:

  1. 在chrome中打开特殊的URL chrome://设置/
  2. 向下滚动并单击底部的高级链接。
  3. 单击上的雪佛龙以显示更多设置。
  4. 只有在设置了至少一个要运行的文件而不是下载的情况下,才会在下载下面有一个选项。
  5. “下载后自动打开某些文件类型”旁边的点击“清除”按钮

没有选项可以只重置某些文件类型。您会注意到按钮随后消失了。

高级设置:

清除“始终运行设置”:

检查网址是否被阻塞.

适用于在Chrome浏览器上登录到托管帐户的Linux用户。使用您喜欢的JSON文件编辑器:转到/etc/opt/chrome/policies/托管文件夹。创建或更新JSON文件并根据需要输入URL:在URLBlocklist中,添加要阻止的URL。在URLAllowlist中,添加希望用户访问的URL。

您可以使用: chrome://policy/验证当前加载的策略

来源:

重置铬协议处理程序

代码语言:javascript
复制
$ grep -r ~/.config/google-chrome/ -e protocol_handler -l

如果使用默认配置文件,则这是要编辑的文件:

  • $HOME/.config/google-chrome/Default/Preferences

如果您使用多个配置文件,首选项文件将在google/Profile 2,google/Profile 3中。

根据需要清除特定协议的设置,在本例中为obsidian://。

代码语言:javascript
复制
$ jq <  /home/jaroslav/.config/google-chrome/Default/Preferences  \
    | grep protocol_handler -C 2

  "custom_handlers": {
    "enabled": true,
    "ignored_protocol_handlers": [
      {
        "last_modified": "13276367110202441",
--
      }
    ],
    "registered_protocol_handlers": []
  },
  "custom_links": {
--
        },
        "ppapi_broker": {},
        "protocol_handler": {},
        "safe_browsing_url_check_data": {},
        "sensors": {},

在较新版本的chrome上,您可以通过web来控制它。只需打开这个特殊的URL

  • chrome://设置/内容/文件处理程序
  • chrome://设置/处理程序

您要选择以下内容:

Web应用程序可以要求打开文件类型

站点可以要求处理协议。

参考资料:

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/669681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档