<table><tr><td style="">sitter created this revision.<br />Restricted Application added a project: Plasma.<br />Restricted Application added a subscriber: plasma-devel.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D7343" rel="noreferrer">View Revision</a></tr></table><br /><div><strong>REVISION SUMMARY</strong><div><p>configure_file on the desktop file to generate a NoDisplay variant to<br />
handle URLs (currently appstream: only) and have the standard desktop file<br />
only accept files.</p>

<p>Discover can accept local files corresponding to a package format mimetype<br />
(e.g. rpm or deb) but these files must be strictly local as discover has<br />
no provisioning for downloading them on the file. To make this work<br />
we'll need an Exec line containing %F which makes kio download a remote<br />
URL to a local file before then passing it to discover. Namely clicking<br />
on a <a href="http://foo.bar/x.deb" class="remarkup-link" target="_blank" rel="noreferrer">http://foo.bar/x.deb</a> in a browser will cause kio to download the file<br />
and then start discover with the locally downloaded version.</p>

<p>Conversely, discover also implements a scheme handler for appstream: which<br />
isn't itself a protocol implemented by KIO but instead acts as lookup<br />
URI. These URLS cannot be downloaded but instead must be passed verbatim<br />
to discover for handling, to have this working we need %U rather than %F.<br />
End result being that clicking appstream://org.kde.krita.desktop in a<br />
browser will immediately start discover displaying the krita page.</p>

<p>To support both methods we need two separate desktop files, one to handle<br />
the package formats with %F and another handling appstream: with %U.<br />
We are now calling configure_file on a generic desktop file template to<br />
adjust it for these two use cases. The main org.kde.discover.desktop is<br />
visible in menus and can only handle local files. The new<br />
org.kde.discover.urlhandler.desktop is not visible in menus but used when<br />
KIO encounters an appstream url which it won't know what to do with.</p></div></div><br /><div><strong>TEST PLAN</strong><div><ul class="remarkup-list">
<li class="remarkup-list-item">try opening a http url pointing to a deb (probably needs to have mimetype deb in the http header fields)</li>
<li class="remarkup-list-item">should make plasma show a download arrow thingy</li>
</ul>

<ul class="remarkup-list">
<li class="remarkup-list-item">try opening appstream://org.kde.krita.desktop</li>
<li class="remarkup-list-item">should open discover right away and point it to the krita page</li>
</ul>

<ul class="remarkup-list">
<li class="remarkup-list-item">download old discord and install on neon <a href="https://dl.discordapp.net/apps/linux/0.0.1/discord-0.0.1.deb" class="remarkup-link" target="_blank" rel="noreferrer">https://dl.discordapp.net/apps/linux/0.0.1/discord-0.0.1.deb</a></li>
<li class="remarkup-list-item">open discord</li>
<li class="remarkup-list-item">should notify of new version and recommend to download the deb</li>
<li class="remarkup-list-item">click download</li>
<li class="remarkup-list-item">discord closes and plasma shows a download notification</li>
<li class="remarkup-list-item">discover starts with page for downloaded deb in ~/.cache/...</li>
</ul></div></div><br /><div><strong>REPOSITORY</strong><div><div>R134 Discover Software Store</div></div></div><br /><div><strong>BRANCH</strong><div><div>Plasma/5.10</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D7343" rel="noreferrer">https://phabricator.kde.org/D7343</a></div></div><br /><div><strong>AFFECTED FILES</strong><div><div>discover/CMakeLists.txt<br />
discover/org.kde.discover.desktop<br />
discover/org.kde.discover.desktop.cmake</div></div></div><br /><div><strong>To: </strong>sitter, apol<br /><strong>Cc: </strong>plasma-devel, ZrenBot, progwolff, lesliezhai, ali-mohamed, jensreuterberg, abetts, sebas, apol, mart, lukas<br /></div>