Patrick Griffins aka TingPing v blogovém zápisku přiblížil, jak bude vypadat podpora WebExtensions, standardizovaných rozšíření v prohlížeči webový stránek “Web”, známém též pod jménem Epiphany. Jde o plánovanou novinku do příštího vydání GNOME (snad už 43?)
Co jsou WebExtensions?
Jde o soubor různých API, která řídí přístup rozšíření k funkcím prohlížeče, počítače, nebo jednotlivým webovým stránkám. API vzniklo při změnách, kdy Firefox opouštěl staré formáty rozšíření, implementoval nové API (podobající se tomu použitém v prohlížeči Google Chrome). V roce 2020 se rozhodlo vydat podobnou cestou i Safari. Nicméně WebExtensions nejsou úplně 100% univerzální, některé části ještě nejsou zcela přenositelné mezi prohlížeči a některé třeba do budoucna vůbec nebudou. Jde ale o solidní základ a pokus o jejich standardizaci. Epiphany začíná přidávat podporu od verze 43.alpha
Co WebExtensions umí?
WebExtensions umožňují na pozadí vytvořit stránku, která má přístup k objektu “browser”. Podle toho, co uživatel povolí, jsou zde přístupné funkcionality prohlížeče.
Kromě této neviditelné stránky mohou rozšíření provádět i viditelné změny. Příkladem jsou třeba různé “Akce prohlížeče (Browser Action)” v horní liště prohlížeče, které zobrazí vyskakující okno s obsahem. Rozšíření mohou mít také svojí stránku, kde můžete dané rozšíření konfigurovat (Options Page). Rozšíření mohou přímo vkládat skripty (Content Scripts) do stránek. Ty mají přistupují k DOM (reprezentaci webové stránky v prohlížeči) a komunikují s ostatními částmi pomocí krátkých JSON zpráv.
Příklad užití
Uživatelé používají často různé správce hesel. Takový správce má stránku na pozadí, která obhospodařuje uživatelův účet. Necháte si vyskočit okno, kde můžete editovat některé možnosti, zobrazit heslo, vygenerovat nové, apod. No a nakonec do každé stránky vkládá skript. Skript projde celou stránku a snaží se uživateli nabízet odpovídající akce (generování hesla, vložení zapamatovaného, apod.). Informace si vyměnuje se stránkou běžící na pozadí, která se právě stará o tu synchronizaci na pozadí. V Epiphany už funguje skoro vše, zbývá vyhladit pár detailů pro Bitwarden.
Podpora v Epiphany
Epiphany 43.alpha podporuje základní rozhraní (popsaná výše), projekt se snaží implementovat Firefox ManifestV2 API, které, kde je to možné, zahrnuje kompatibilitu s rozšířeními pro Chrome. Podpora manifestu v3 je vedle verze 2 do budoucna také plánována. V tuto chvíli jsou podporované následující API:
alarms
- Plánování událostí spouštěných podle času, nebo data.cookies
- Správa cookies v prohlížeči.downloads
- Možnost spouštět a spravovat stahovánímenus
- Vytváření kontextových menunotifications
- Nativní notifikacestorage
- Ukládání nastavení daného rozšířenítabs
- Správa a monitoring záložek prohlížeče (vytváření, zavírání, apod.)windows
- Správa a monitoring oken prohlížeče
Bohužel chybí webRequest
, které je velmi často používané různými rozšířeními jako třeba uBlockOrigin nebo PrivacyBadger. Implementace tohoto API je ale bohužel závislá na vylepšeních ve WebKitGTK (projekt renderovacího enginu pro grafickou knihovnu GTK). Pokud vás současný stav zajímá, nebo se chcete podívat na detaily, mrkněte se do dokumentace.
Instalování rozšíření do Epiphany
Podpora je stále experimentální, takže může vést k pádu, nebo neočekávanému chování. Všechno, pokud možno, chtějí vývojáři Epiphany hlásit (spíš jim, než přímo vývojářům rozšíření).
Instalace testovací vydání z flatpak repozitáře gnome-nightly
.
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
flatpak install gnome-nightly org.gnome.Epiphany.Devel
flatpak run --command=gsettings org.gnome.Epiphany.Devel set org.gnome.Epiphany.web:/org/gnome/epiphany/web/ enable-webextensions true
Objeví se položka s rozšířeními a pokud budete prohlížeč spouštět z terminálu uvidíte i ladící informace z rozšířeními. Rozšíření stahujte přímo ze stránek Mozilly. Hodně štěstí a těšíme se na 43-final.
Napsat komentář