icecat "mailto" handler does not work - and cannot be reconfigured by user

OpenSubmitted by Danny Milosavljevic.
Details
4 participants
  • Danny Milosavljevic
  • Jonathan Brielmaier
  • Brendan Tildesley
  • Maxim Cournoyer
Owner
unassigned
Severity
normal
D
D
Danny Milosavljevic wrote on 25 Jul 2016 09:34
20160725093440.5d4f9c6f@scratchpost.org
Toggle quote (4 lines)> Unless I misunderstood what you mean: this already exists. On the page> you linked to above look for “reply via email to”. It’s followed by a> button. When you click on it you get a “mailto”-Link.
Whoops. I should have read the page better.
However, clicking on that button in icecat does not send E-Mail for me.
Monitoring the network interface I can see that it redirects to a mailto: URL. So that's nice.
Checking the application preferences of icecat, it only gives "always ask" (note: it doesn't ask) and not an application for "mailto". (in GuixSD)
Creating my own HTML page with a mailto link doesn't work either.
Therefore, I reported a bug to Guix too.
Bug report follows:
"mailto:" links don't work in icecat.
Checking the icecat source code, there are several ways to handle E-Mail. One of them is as "external helper app". One of those (not sure whether it's the correct one) uses gio's g_app_info_launch_default_for_uri in order to launch helper applications.
There is a test icecat-38.8.0/uriloader/exthandler/tests/unit/test_handlerService.js that does:
let isLinux = ("@mozilla.org/gio-service;1" in Components.classes); if (isLinux) { // Check mailto handler from GIO // If there isn't one, then we have no mailto handler let gIOSvc = Cc["@mozilla.org/gio-service;1"]. createInstance(Ci.nsIGIOService); try { gIOSvc.getAppForURIScheme("mailto"); noMailto = false; } catch (ex) { noMailto = true; } }
And this ./toolkit/system/gnome/nsGIOService.cpp uses g_app_info_launch_default_for_uri .
Therefore, I tried it out:
#include <glib.h>#include <gio/gio.h>#include <stdlib.h>
int main() { GError* error; g_app_info_launch_default_for_uri("mailto:foo@example.com", NULL, &error); // g_app_info_launch_default_for_uri("http://www.google.at/",NULL, &error); if (error) { g_warning("err %s", error->message); g_error_free(error); return 1; } else return 0;}
I get:
** (process:12464): WARNING **: err Operation not supported
If I debug it some more I get:
$ strace -f ./g 2>&1 |grep open |grep -v ENOENT
open("/home/dannym/.local/share//mime/mime.cache", O_RDONLY) = 3open("/home/dannym/.guix-profile/share/mime/mime.cache", O_RDONLY) = 3open("/run/current-system/profile/share/mime/mime.cache", O_RDONLY) = 3open("/home/dannym/.guix-profile/share/mime/mime.cache", O_RDONLY) = 3open("/run/current-system/profile/share/mime/mime.cache", O_RDONLY) = 3open("/home/dannym/.guix-profile/lib/gio/modules", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3open("/home/dannym/.guix-profile/lib/gio/modules/giomodule.cache", O_RDONLY) = 4open("/home/dannym/.guix-profile/lib/gio/modules/libdconfsettings.so", O_RDONLY|O_CLOEXEC) = 4open("/run/current-system/profile/lib/gio/modules", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3open("/run/current-system/profile/lib/gio/modules/giomodule.cache", O_RDONLY) = 4open("/gnu/store/6qrijb6cfyvs8svacr0l9a75vcpypr5f-glib-2.48.0/lib/gio/modules", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3open("/gnu/store/4lbgxvsk8xl75hlkjqgrqvmpq74app73-dconf-0.26.0/lib/gio/modules", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3open("/gnu/store/4lbgxvsk8xl75hlkjqgrqvmpq74app73-dconf-0.26.0/lib/gio/modules/giomodule.cache", O_RDONLY) = 4open("/home/dannym/.guix-profile/lib/gio/modules", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3open("/home/dannym/.guix-profile/lib/gio/modules/giomodule.cache", O_RDONLY) = 4open("/run/current-system/profile/lib/gio/modules", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3open("/run/current-system/profile/lib/gio/modules/giomodule.cache", O_RDONLY) = 4open("/gnu/store/m3py3rk71ihlfgvj2kss7054hwfqwkpq-glib-2.48.0/lib/gio/modules", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3[pid 12632] open("/usr/share/locale/locale.alias", O_RDONLY <unfinished ...>[pid 12632] open("/home/dannym/.config/mimeapps.list", O_RDONLY) = 5[pid 12632] open("/gnu/store/8m00x5x8ykmar27s9248cmhnkdb2n54a-glibc-2.22/lib/gconv/gconv-modules", O_RDONLY|O_CLOEXEC) = 5[pid 12632] open("/home/dannym/.local/share/applications", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5[pid 12632] open("/home/dannym/.local/share/applications/mimeapps.list", O_RDONLY) = 5[pid 12632] open("/home/dannym/.local/share/applications/mimeinfo.cache", O_RDONLY) = 5[pid 12632] open("/home/dannym/.guix-profile/share/applications", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5[pid 12632] open("/run/current-system/profile/share/applications", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5[pid 12632] open("/run/current-system/profile/share/applications/mimeinfo.cache", O_RDONLY) = 5[pid 12632] open("/home/dannym/.guix-profile/share/applications", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5[pid 12632] open("/run/current-system/profile/share/applications", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 5[pid 12632] open("/run/current-system/profile/share/applications/mimeinfo.cache", O_RDONLY) = 5
There would be g_app_info_set_as_default_for_type () to set a new default application in nsGIOService - which is exposed and used by ./browser/components/shell/nsGNOMEShellService.cpp on setting icecat up as default browser (so not always).
I'm using Fluxbox.
M
M
Maxim Cournoyer wrote on 13 Oct 2020 15:23
(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
87362i6z0i.fsf@gmail.com
Hello Danny,
Danny Milosavljevic <dannym@scratchpost.org> writes:
[...]
Toggle quote (4 lines)> Checking the application preferences of icecat, it only gives "always> ask" (note: it doesn't ask) and not an application for "mailto". (in> GuixSD)
Testing in latest IceCat, there's a 'Use other...' entry in the mailtoapplications configuration. I also saw 'Emacs' in the list of potentialapplications to open mailto URIs, tried it and it opened Emacs.
Does that work for you?
To get the applications recognized as supporting this URI scheme, theymust provide a .desktop file which mentions support for it, for examplevia a MimeType=x-scheme-handler entry:
Toggle snippet (7 lines)$ grep -rin 'x-scheme-handler' $(guix build weechat)/gnu/store/...-weechat-2.9/share/applications/weechat.desktop:17:MimeType=x-scheme-handler/irc;x-scheme-handler/ircs;--8<---------------cut here---------------end--------------->8---
This information gets compiled into a MIME database by a profile hookunder:
$ grep 'x-scheme-handler/ircs' ~/.guix-profile/share/applications/mimeinfo.cache x-scheme-handler/ircs=weechat.desktop;
Toggle snippet (6 lines)
And Icecat picks its up to show ircs:// URIs and shows the applicationas registered for this type in its Applications settings view.
Maxim
B
B
Brendan Tildesley wrote on 16 Oct 2020 09:12
Re: icecat "mailto" handler does not work - and cannot be reconfigured by user
(address . 24066@debbugs.gnu.org)(name . Danny Milosavljevic)(address . dannym@scratchpost.org)
20124659-ad00-ee4c-e05f-c22653c80598@brendan.scot
If I click the reply via email button in Icecat, it switches to icedove but does not open a reply email at all.In ungoogled-chromium, it opens up a blank reply email, failing to fill the To, CC, Subject with anything.
If I click the equivalent mailto link on the issues page in Icecat, its the sameIf I click the equivalent mailto link...., but in chromium, it opens a new email, but only the Subject is filled out. No To or CC.
I've always thus replied to the mailing list by manually copy-pasting the the Subject, adding Re:, and trying to find the posters email address, and bug address to add in To/CC. Is this related to your bug?
J
J
Jonathan Brielmaier wrote on 26 Oct 2020 17:39
icecat "mailto" handler does not work - and cannot be reconfigured by user
(address . 24066@debbugs.gnu.org)
7321280d-efc6-bf8d-d287-6bbd9bba630b@web.de
This issue annoys me, so I searched for a workaround which I found :)
In Icecat go to about:preferences -> General -> Applications (only aheader): Set mailto to `Use other` and set it to`/run/current-system/profile/bin/icedove`.
$ grep mailto/gnu/store/3zxx08qfl9q6d9s80p58521y9x3ni3p1-icedove-78.3.3/share/applications/icedove.desktopMimeType=x-scheme-handler/mailto;
That seems correct. xdg-open mailto:foo@gnu.org works for me always, soit really seems a Icecat/Firefox thing...
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send email to 24066@debbugs.gnu.org