カスタムURI処理:xdg-openとFirefoxは機能しますがChromeでは機能しません

カスタムURI処理:xdg-openとFirefoxは機能しますがChromeでは機能しません

obsidian://Obsidianアプリケーションを使用してURIを開くようにLinux環境を設定しようとしています(参照:黒曜石URIの使用)。

これが私が使用するプロセスです。再現可能であることを確認するために、きれいなUbuntuシステムでこれを行いました。

  1. このファイルはファイルと共に保存されますObsidian.AppImage。ファイルに実行権限があります。~/obsidianicon.jpgAppImage

  2. これは私の~/.local/share/applications/obsidian.desktopファイルの内容です。

    [Desktop Entry]
    Name=Obsidian
    Exec=/home/rachum/obsidian/Obsidian.AppImage %u
    Terminal=false
    Type=Application
    Icon=/home/rachum/obsidian/icon.png  
    StartupWMClass=obsidian
    X-AppImage-Version=0.8.15
    Comment=Obsidian
    Categories=Office;
    MimeType=text/html;x-scheme-handler/obsidian;
    
  3. 私は逃げたupdate-desktop-database ~/.local/share/applications/

  4. xdg-open意図したとおりに作品を使用してください。

    xdg-open "obsidian://new?vault=notes&name=note&content=content"
    

    このコマンドラインは、新しい説明とコンテンツを含むObsidianアプリケーションを開きます。

  5. Firefox(プレインストール)で上記のURIをURLバーに入力すると、新しいコメントとコンテンツを含むObsidianアプリケーションも開きます。

  6. .debChromeの公式ホームページからファイルをダウンロードして実行してChromeをインストールしました。dpkg -i <.deb file>

  7. 上記のURIをChromeに入力すると、「obsidian://new?vault=notes&name=note&content=content」のGoogle検索にリダイレクトされます。

ChromeがXDG設定に従わないのはなぜですか?


アップデート#1:回答コメントに詳細を追加します。

私の~/.local/share/applications/mimeapps.listファイルは次のとおりです。

[Default Applications]
x-scheme-handler/obsidian=obsidian.desktop

私の~/.local/share/applications/mimeinfo.cacheファイルは次のとおりです。

[MIME Cache]
text/html=obsidian.desktop;
x-scheme-handler/obsidian=obsidian.desktop;

答え1

ChromeがXDG設定に従わないのはなぜですか?

お客様の評価が正しくありません。 Chromeはxdg-openを使用しています。以下のスクリーンショットは、google-chromeとchromiumの両方でxdg-openを使用して「特殊リンク」を開くように求められます。

プロンプトxdg - 開く

常に実行オプションをリセット

以前に「この種類のファイルは常に開く」ダイアログボックスを受け入れた場合は、この設定をリセットする必要があります。消去するオプションは次のとおりです。

ダウンロード後、特定のファイル形式を自動的に開きます。

このオプションにアクセスするには:

  1. Chromeで特別なURL chrome:// settings /を開きます。
  2. 下にスクロールして下部の詳細リンクをクリックします。
  3. さらに設定するには、「andvanced」のシェブロンアイコンをクリックしてください。
  4. ダウンロードの下には、ダウンロードの代わりに実行するファイルを1つ以上設定した場合にのみ存在するオプションがあります。
  5. 「クリア」をクリック「ダウンロード後に特定のファイル形式を自動的に開く」の横のボタン

特定のファイル形式のみをリセットするオプションはありません。これでボタンが消えるのがわかります。

詳細設定: 詳細設定

常に実行設定を消去します。 設定を消去


URLがブロックされていないことを確認してください。

ChromeブラウザでホスティングアカウントにログインしているLinuxユーザーの場合。お好みのJSONファイルエディタを使用してください。

/etc/opt/chrome/policies/drivenフォルダに移動します。 JSONファイルを作成または更新し、必要に応じてURLを入力します。 URLBlocklistでブロックしたいURLを追加します。 URLAllowlistにユーザーが訪問するURLを追加します。

chrome://policy/ を使用して、現在ロードされているポリシーを確認できます。

源泉:


Chromeプロトコルハンドラのリセット

$ grep -r ~/.config/google-chrome/ -e protocol_handler -l

デフォルト設定ファイルを使用している場合、編集するファイルは次のとおりです。

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

複数のプロファイルを使用している場合、デフォルト設定ファイルはgoogle-chrome / Profile 2、google-chrome / Profile 3などにあります。

必要に応じて特定のプロトコル(この場合はobsidian://)の設定を消去します。

$ 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-uiを介して制御できます。この特別なURLを開きます

  • Chrome://settings/content/fileHandlers
  • Chrome://設定/ハンドラ

あなたはこれを選択したいと思います:

Webアプリケーションはファイル形式を開くように要求できます。

そして

サイトには処理契約が必要な場合があります。


引用:

答え2

私に役立ったのは、sudo update-desktop-database私も同じ問題があり、しばらく検索した後にこれを見つけたことです。https://superuser.com/questions/162092/how-can-i-register-a-custom-protocol-with-xdg

関連情報