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

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

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

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

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

1
задан 22 September 2015 в 15:49

2 ответа

Я только столкнулся с той же проблемой, но затем для открытия ссылки 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:test@example.com
# (opened a KDialog window that printed the email address, as I specified)
3
ответ дан 23 May 2018 в 17:15

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

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

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

1
ответ дан 23 May 2018 в 17:15

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

Похожие вопросы: