Нажатие на ссылку в PDF порождает тысячи процессов xdg-open.

У меня есть PDF со ссылкой на веб-страницу, которая раньше работала (она открывала бы ссылку в Firefox через xdg-open). Однако, когда я щелкаю по нему сейчас, запускаются буквально тысячи процессов xdg-open, и плазменный рабочий стол работает на 100% процессорной мощности.

Я не знаю, как начать устранять это. Что может вызвать эту проблему?

Пример проблемы PDF здесь.

Вот скриншот того, что происходит. Обратите внимание на поврежденную панель задач из-за тысяч экземпляров xdg-open

3 ответа

Решение

Похоже, виновник был плохим параметром в 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 (В 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:test@example.com
# (opened a KDialog window that printed the email address, as I specified)

Да, не делайте xdg-open предпочтительным приложением. Потому что задача xdg-open - найти предпочтительное приложение. Бесконечная рекурсия

Другими словами, xdg-open является "клиентом" системы предпочтений mime/apps. Нужно указать где-нибудь, что на самом деле является предпочтительным приложением, и это не может быть само xdg-open.

Вы установили xdg-open в качестве предпочтительного приложения для text / html или это сделал ваш дистрибутив?

Другие вопросы по тегам