私はPDF Webページへのリンクがあり、以前は機能していました(xdg-openを介してFirefoxでリンクを開きます)。しかし、ここでクリックすると、文字通り数千xdg-openプロセスが開始され、plasma-desktopが100%cpuで実行されます。
これのトラブルシューティングを開始する方法がわかりません。この問題の原因は何ですか?
問題の例PDFは ここ です。
これが何が起こるかのスクリーンショットです。何千ものxdg-openインスタンスによるタスクバーの破損に注意してください
犯人はDolphinの不適切な設定だったようです。HTMLファイルのデフォルトの「名前を付けて開く」アクションはxdg-openでしたが、これにより無限ループが発生したと思います。デフォルトのプログラムを代わりにFirefoxに変更すると、期待どおりに動作します。
「システム設定/デフォルトプログラム」でFirefoxを選択すれば十分だと思ったでしょうが、どうやらそうではありませんでした。
同じ問題が発生しましたが、mailto:
リンクを開いたためです。ただし、問題をデバッグする方法はおそらくあなたの方法と似ています。
最初に、mailto(またはあなたの場合はhttp)スキームを処理するものを見つけます。
$ xdg-mime query default x-scheme-handler/mailto
kmailservice5.desktop
さて、kmailservice5.desktop
とは何ですか?
$ locate kmailservice5.desktop
/usr/share/applications/kmailservice5.desktop
上記のファイルを開くと次のようになります。
[Desktop Entry]
Type=Application
Exec=kmailservice5 %u
Icon=mail-message-new
MimeType=x-scheme-handler/mailto;
X-DocPath=kioslave5/mailto/index.html
NoDisplay=true
# KMailService is the handler for mailto URLs
Name=KMailService
...
kmailservice5
は何をしているのでしょうか?
$ kmailservice5 --help
xdg-open -- opens a file or URL in the user's preferred
application
Synopsis
xdg-open { file | URL }
xdg-open { --help | --manual | --version }
Use 'man xdg-open' or 'xdg-open --manual' for additional info.
これは、xdg-open --help
!とまったく同じ出力です。それは奇妙です...私はkmailservice5
のソースを調べて、 http://api.kde.org/frameworks-api/frameworks5-apidocs/kio/html/kmailservice_8cpp_sourceを見つけました.html 。 QDesktopServices::openUrl
を呼び出すシンプルなアプリケーションです https://doc.qt.io/qt-5/qdesktopservices.html#openUrl ( KDE4では、 メールアプリケーションがKToolInvocation::invokeMailer
;を介して明示的に呼び出されました。KDE5への部分的なアップグレードがこの破損の原因である可能性があります)。
つまり、mailto:...はmailto:のハンドラーを開き、mailto:のハンドラーを開きます。これは決して終了せず、このループを終了する唯一の方法はkillall kde-open plasma-desktop
を発行することでした。
この問題を解決するために、次の内容のrobs-mailto.desktop
を作成しました。
[Desktop Entry]
Type=Application
Exec=kdialog --msgbox "Rob's mailto handler: %u"
Icon=mail-message-new
MimeType=x-scheme-handler/mailto;
Name=RobsMailtoHandler
次のように登録しました。
$ xdg-mime default robs-mailto.desktop x-scheme-handler/mailto
正しく登録されていることを確認しました:
$ xdg-mime query default x-scheme-handler/mailto
robs-mailto.desktop
$ xdg-open mailto:[email protected]
# (opened a KDialog window that printed the email address, as I specified)
はい、xdg-openを優先アプリケーションにしないでください。 xdg-open isの仕事は、好ましいアプリケーションを見つけるためです。無限の再帰が起こります。
言い換えれば、xdg-openはmime/apps設定システムの「クライアント」です。実際に何がis優先アプリケーションであるかをどこかに指定する必要があり、それはおそらくそれ自体xdg-openにすることはできません。
Xdg-openをtext/htmlの優先アプリとして設定しましたか、それともディストリビューションが行いましたか?