У меня есть PDF со ссылкой на веб-страницу, которая раньше работала (это откроет ссылку в Firefox через xdg-открытый). Однако, когда я нажимаю его теперь, буквально тысячи xdg-открытых процессов запускаются, и плазменный рабочий стол достигает 100% CPU.
Я не знаю, как начать диагностировать это. Что могло вызвать эту проблему?
Пример проблемы PDF здесь.
Вот снимок экрана того, что происходит. Отметьте поврежденную панель задач из-за тысяч xdg-открытых экземпляров
Кажется, что преступник был плохой установкой у дельфина, где значение по умолчанию, "открытое как" действие для файлов HTML, было xdg-открыто, который я предполагаю, вызвал бесконечный цикл. После изменения программы по умолчанию к Firefox вместо этого, это работает как ожидалось.
я думал бы, что выбиравший Firefox в "Параметрах настройки системы / Программы По умолчанию" будут достаточны, но по-видимому нет.
Да, не делайте xdg-открытыми предпочтительное приложение. Поскольку задание xdg-открывает для обнаружения предпочтительного приложения. Бесконечная рекурсия следует.
, Другими словами, xdg-открытый "клиент" предпочтительной системы пантомимы/приложений. Нужно указать где-нибудь, что на самом деле предпочтительное приложение, и это не может возможно быть xdg-открыто само.
Вы устанавливали xdg-открытый как предпочтительное приложение для текста/HTML, или это было сделано Вашим дистрибутивом?
Я просто встретился с той же проблемой, но затем для открытия a 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
.
Для решения проблемы, я создал a 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)