Bring back webapp support
This branch revives the epiphany plugin and rewrites it. With this implementation, users can manage the web apps they have installed via Epiphany (GNOME Web); specifically they can view, open, and uninstall them. Installing web apps also works but since web apps are not often included in distribution AppStream data and we don't yet include them with Software (#1575 (closed)), that feature is hard to access. Here's some more context from one of the commit messages:
The goal is to include a set of Progressive Web Apps in Software that can be installed via Epiphany's web app support (and potentially also via Chromium), to expand the selection of apps available to users who might not otherwise find them. While Epiphany's web apps do not currently implement support for PWA manifests, that is hopefully going to be in scope for this project. While the plan is to only include PWAs in the set hard coded into Software, non-PWA web apps installed via Epiphany will also show up in Software.
The previous implementation of web apps in Software was dropped because it was buggy and users did not like it, since they didn't perceive much benefit of using sites as web apps versus using a normal browser and were confused by the apps not being native desktop apps. The following factors should mitigate or address those issues for the new implementation:
- We're going to use a D-Bus API provided by Epiphany for enumerating, installing, and removing web apps rather than re-implementing those functions in Software. This avoids bugs that can occur when the implementations are out of sync.
- We're going to differentiate web apps from native apps in the UI, pending design input on how to do so.
- The set of PWAs included with Software will be mostly or entirely apps that would not otherwise be available to the user, because they are only available as PWAs and not native apps.
- Once we have support for PWA manifests in Epiphany, or support for Chromium-based web apps which already support manifests, the apps should be more featureful and closer to native apps than the current web app implementation, e.g. they may work offline to some extent.