Problem with frameworks 5.86.0 and Konqueror

Stefano Crocco stefano.crocco at alice.it
Thu Sep 16 18:38:42 BST 2021


Hello to everyone.
I'm the current Konqueror maintainer and I need help about how to solve an 
incompatibility between the 5.86.0 version of KIO and Konqueror itself. 

After upgrading KDE frameworks from version 5.85.0 to 5.86.0 on my system, I 
noticed that whenever I entered an http(s) URL in the location bar, the page 
would be opened in a new tab, instead of the current tab like it used to (and 
should) do.

After a bit of investigation, I came to the conclusion that the cause of this 
behaviour is the change introduced to 
KIO::DesktopExecParser::hasSchemeHandler() by the commit https://
invent.kde.org/frameworks/kio/-/commit/
5fa55a2395cbfb6504e56bf71c869c8e49902e13

If I understand correctly, this commit removes the precedence previously given 
to kioslaves when there's both a kioslave and a protocol handler for the given 
URL. In Konqueror, this causes the problem I described because Konqueror 
relies in KRun::foundMimeType being called on a subclass of KRun to determine 
how to open an URL when its mimetype is initially unknown. In KIO 5.86.0 this 
doesn't happen anymore because KIO::DesktopExecParser::hasSchemeHandler 
(called from krun.cpp:460) now returns true for http(s) URLs, which causes 
KRun to directly launch the preferred application for those URLs. In my case, 
this is kfmclient_html, which is part of Konqueror itself. Depending on the 
user's settings, calling kfmclient_html could either open the URL in a new tab 
(my situation) or even in a new Konqueror window.

This problem doesn't only affect http(s) URLs: if I enter, for example, a man: 
URL, the man page isn't opened in Konqueror, as it used to, but in 
KHelpCenter, which is something which shouldn't happen at all.

Looking at the documentation and the source code for KRun I couldn't find a way 
to restore the pre-5.86.0 behaviour. Am I missing something? What would be the 
best way to solve this issue? Initially, when I hadn't yet realized that this 
issue wasn't only for http(s) URLs, I thought of handling those in a special 
way. However, given that the problem is more widespread, I don't think this 
can be done.

Thanks in advance

Stefano





More information about the kde-devel mailing list