PWA, support for mailto protocol
Currently Proton Mail has a good PWA but it's lacking the crucial protocol_handlers
member so it can be used for email easily. (per the spec of
https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps/Manifest/Reference
)
To assist with this I've made a manifest that fixes this issue and implements a few other fixes (eg fixing the app not respecting rotation properly)
compare to protons current at: https://mail.proton.me/assets/manifest.webmanifest
My manifest:
{
"name": "Proton Mail",
"short_name": "Proton Mail",
"description": "Proton Mail is based in Switzerland and uses advanced encryption to keep your data safe. Apps available for Android, iOS, and desktop devices.",
"dir": "auto",
"categories": ["utilities", "business"],
"screenshots": [
{
"src": "https://res.cloudinary.com/dbulfrlrz/images/f_auto,q_auto/v1714568388/wp-pme/pr-key-visual-4_5142635e14/pr-key-visual-4_5142635e14.jpg?_i=AA",
"form_factor": "wide",
"label": "Showcase of basic app layout"
},
{
"src": "https://res.cloudinary.com/dbulfrlrz/images/f_auto,q_auto/v1720190502/wp-pme/desktop-app-2_562501eae8/desktop-app-2_562501eae8.png?_i=AA",
"label": "App settings layout",
"form_factor": "wide"
},
{
"src": "https://play-lh.googleusercontent.com/bG9ZgI-hKQsH17kRGFUfAxLT1FiD3zLdani6Gb5nGyx-KnPt1aBbL9FzTKmmSmEdBHwg",
"label": "Image showing basic app layout with a banner.",
"form_factor": "narrow"
},
{
"src": "https://play-lh.googleusercontent.com/OfYMKqLgWSB2CvSQMLw40oSOLx_Ig2iTUO4QSV41qWQy5iM_e_D1epkBmYzMigDMOQA",
"label": "Further showcase of a customized ui of the app.",
"form_factor": "narrow"
},
{
"src": "https://play-lh.googleusercontent.com/-stXlRPpBBntt-BeoAlqoMVlrHok-YAmL1Il7seG9O_tYetvJ5nX8Zn7ztScZc2tgXk",
"label": "Showcase of how to organize",
"form_factor": "narrow"
}
],
"lang": "en-US",
"display_override": ["standalone", "fullscreen"],
"display": "standalone",
"orientation": "natural",
"scope": "https://mail.proton.me/",
"launch_handler":{
"client-mode": "navigate-existing"
},
"start_url": "https://mail.proton.me/u/",
"protocol_handlers": [
{
"protocol": "mailto",
"url": "https://mail.proton.me/inbox/#mailto=mailto%3A%s"
}
],
"prefer_related_applications": true,
"related_applications": [
{
"platform": "play",
"url": "https://play.google.com/store/apps/details?id=ch.protonmail.android",
"id": "ch.protonmail.android"
},
{
"platform": "itunes",
"url": "https://apps.apple.com/us/app/proton-mail-encrypted-email/id979659905"
}
],
"background_color": "#121017",
"id": "https://mail.proton.me/",
"theme_color": "#1b1340",
"icons": [
{
"src": "android-chrome-36x36.png",
"sizes": "36x36",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-48x48.png",
"sizes": "48x48",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-72x72.png",
"sizes": "72x72",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-96x96.png",
"sizes": "96x96",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-144x144.png",
"sizes": "144x144",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-256x256.png",
"sizes": "256x256",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-384x384.png",
"sizes": "384x384",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "any"
},
{
"src": "android-chrome-maskable-36x36.png",
"sizes": "36x36",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-48x48.png",
"sizes": "48x48",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-72x72.png",
"sizes": "72x72",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-96x96.png",
"sizes": "96x96",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-144x144.png",
"sizes": "144x144",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-192x192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-256x256.png",
"sizes": "256x256",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-384x384.png",
"sizes": "384x384",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "android-chrome-maskable-512x512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}
