Linux desktop app: Register as text/calendar handler + forward .ics arguments
On Linux, clicking an .ics link in a browser downloads the file and there is no way to get it into Proton Calendar without manually navigating to Settings → Import/export and picking the file. Two separate gaps in the desktop app prevent this from working.
- The desktop entry does not claim the MIME type $ grep -i -E 'MimeType|Exec' /usr/share/applications/proton-mail.desktop Exec=proton-mail %U MimeType=x-scheme-handler/mailto;
text/calendar is absent from MimeType=, so the app is never offered as a handler for .ics files, and xdg-mime default proton-mail.desktop text/calendar has no effect. For comparison, gio mime text/calendar on the same system resolves to org.gnome.TextEditor.desktop — i.e. an .ics file opens in a text editor.
- The app discards file arguments on second launch
Even invoking the binary directly with a path while the app is already open does nothing:
$ proton-mail /tmp/test.ics
10:25:33.767 (main) › App start is mac: false is windows: false islinux: true ... version: 1.14.0 osversion: 7.0.0-38-generic params [ '/usr/lib/proton-mail/Proton Mail Beta', '/tmp/test.ics' ]
10:25:33.781 (main) › App is already running
10:25:33.782 (main) › quit-reason set: app-already-running
10:25:33.783 (main) › before-quit reason: app-already-running
The path is received in params and then dropped when the single-instance check fires.
Environment
Ubuntu, kernel 7.0.0-38-generic
Proton Mail desktop app 1.14.0 (build ida-411), Linux, installed from the official package
Firefox as the browser
Suggested fix
Electron exposes a second-instance event that hands the second launch's argv to the already-running instance, so this looks like a contained change:
Add text/calendar; to MimeType= in the .desktop entry (keeping %U in Exec=).
Handle second-instance and, when an argument ends in .ics, focus the window and route it into the existing ICS import flow (the same one behind Settings → Import/export → Import from ICS), showing the confirmation prompt the Android app already presents.
Optionally accept the path on first launch too.